首页
常用运维脚本汇总
电子书阅读
Search
1
安装docker时报错container-selinux >= 2:2.74
172 阅读
2
rsync命令(可替代rm删除巨量文件)
141 阅读
3
docker 镜像加速器配置,daemon.json文件详解
133 阅读
4
使用国内镜像地址拉取k8s安装需要的images
94 阅读
5
docker search命令提示i/o timeout的解决方案
93 阅读
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
登录
Search
标签搜索
命令
nginx
zabbix
Mingrui
累计撰写
92
篇文章
累计收到
8
条评论
首页
栏目
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
页面
常用运维脚本汇总
电子书阅读
搜索到
92
篇与
的结果
2025-10-26
ai模型使用的两个建议
随着对话的深入,对话内容会自然增长。建议切换话题时始终新建对话。新建对话时,相当于清空上下文窗口并重置分词计数。若现有分词对后续查询不再有用,建议重置。因为维护这些分词的代价很高。这种代价主要体现在以下两个方面:大量分词,可能导致模型注意力分散。这些前置的分词,相当于模型的工作记忆。当分词过多时,模型可能会被历史标记分散注意力,特别是在后续需要采样标记时。当注意力被分散时,会降低模型的准确性和表现。上下文窗口中的标记越多,计算成本就会越大。虽然这个计算成本的增幅程度很低,但仍会影响生成序列中下一个标记的生成速度。因此模型速度实际上会轻微下降。计算下一个标记的成本变高。且标记数量越多,事实上,可以把上下文窗口中的标记当做珍贵资源。这相当于模型的工作内存。因此不要用无关信息过度加载,尽量保持简洁。这样模型运行的会更快更好。务必注意,当前使用的具体模型版本。大模型的计算成本更高,因此提供方会对大模型收取的费用也更高。请根据自身的大语言模型使用需求权衡利弊,评估是否可以使用更经济的方案。如果基础模型的智能程度不够,而你又是专业用途,就应该考虑购买顶级模型。
2025年10月26日
35 阅读
0 评论
1 点赞
2025-10-26
提升ai回答多样性的提示词
中文版你是一个多样化生成的助手。请按照如下要求输出:生成 5 个不同的候选答案(内容尽量有风格差异)。为每个答案给出 0-1 概率,并保证总和为 1。按概率从高到低排序,逐条输出为:内容|概率。在末尾给出“采样建议”:若只需 1 个答案,推荐选择概率最高者;若需多样性,可按概率加权进行随机采样。英文版You are a helpful assistant. For each query, please generate a set of five possible responses, each within a separate <response> tag. Responses should each include a <text> and a numeric <probability>. Please sample at random from the [full distribution / tails of the distribution, such that the probability of each response is less than 0.10].
2025年10月26日
16 阅读
0 评论
0 点赞
2025-09-20
kubectl常用命令
集群信息显示 Kubernetes 版本:kubectl version显示集群信息:kubectl cluster-info列出集群中的所有节点:kubectl get node查看一个具体的节点详情:kubectl describe node <node-name>5.列出所有命名空间:kubectl get namespaces列出所有命名空间中的所有 pod:kubectl get pods --all-namespacesPod信息列出特定命名空间中的 pod:kubectl get pods -n <namespace>查看一个 Pod 详情:kubectl describe pod <pod-name> -n <namespace>查看 Pod 日志:kubectl logs <pod-name> -n <namespace>尾部 Pod 日志:kubectl logs -f <pod-name> -n <namespace>在 pod 中执行命令:kubectl exec -it <pod-name> -n <namespace> -- <command>Pod 亲和性和反亲和性列出 pod 的 pod 亲和性规则:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity}'列出 pod 的 pod 反亲和性规则:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity.podAntiAffinity}'节点污点 列出节点污点:kubectl describe node <node-name> | grep TaintsPod 优先级和抢占 列出优先级:kubectl get priorityclassesPod 开销 列出 pod 中的开销:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.overhead}'Pod 健康检查检查 Pod 准备情况:kubectl get pods <pod-name> -n <namespace> -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'检查 Pod 事件:kubectl get events -n <namespace> --field-selector involvedObject.name=<pod-name>服务信息Service信息列出命名空间中的所有服务:kubectl get svc -n <namespace>查看一个服务详情:kubectl describe svc <service-name> -n <namespace>更改和验证 Webhook 配置列出变异 webhook 配置:kubectl get mutatingwebhookconfigurations列出验证 Webhook 配置:kubectl get validatingwebhookconfigurationsPod 网络策略 列出命名空间中的 pod 网络策略:kubectl get networkpolicies -n <namespace>部署相关Deployment信息列出命名空间中的所有Deployment:kubectl get deployments -n <namespace>查看一个Deployment详情:kubectl describe deployment <deployment-name> -n <namespace>查看滚动发布状态:kubectl rollout status deployment/<deployment-name> -n <namespace>查看滚动发布历史记录:kubectl rollout history deployment/<deployment-name> -n <namespace>作业和 CronJob列出命名空间中的所有作业:kubectl get jobs -n <namespace>查看一份工作详情:kubectl describe job <job-name> -n <namespace>列出命名空间中的所有 cron 作业:kubectl get cronjobs -n <namespace>查看一个 cron 作业详情:kubectl describe cronjob <cronjob-name> -n <namespace>StatefulSet信息列出命名空间中的所有 StatefulSet:kubectl get statefulsets -n <namespace>查看一个 StatefulSet详情:kubectl describe statefulset <statefulset-name> -n <namespace>ConfigMap 和Secret信息列出命名空间中的 ConfigMap:kubectl get configmaps -n <namespace>查看一个ConfigMap详情:kubectl describe configmap <configmap-name> -n <namespace>列出命名空间中的 Secret:kubectl get secrets -n <namespace>查看一个Secret详情:kubectl describe secret <secret-name> -n <namespace>命名空间信息查看一个命名空间详情:kubectl describe namespace <namespace-name>资源使用情况检查 pod 的资源使用情况:kubectl top pod <pod-name> -n <namespace>检查节点资源使用情况:kubectl top nodes持久卷和持久卷声明列出PV:kubectl get pv查看一个PV详情:kubectl describe pv <pv-name>列出命名空间中的 PVC:kubectl get pvc -n <namespace>查看PVC详情:kubectl describe pvc <pvc-name> -n <namespace>容量信息列出按容量排序的持久卷 (PV):kubectl get pv --sort-by=.spec.capacity.storage查看PV回收策略:kubectl get pv <pv-name> -o=jsonpath='{.spec.persistentVolumeReclaimPolicy}'列出所有存储类别:kubectl get storageclasses存储卷快照列出存储卷快照:kubectl get volumesnapshot -n <namespace>查看存储卷快照详情:kubectl describe volumesnapshot <snapshot-name> -n <namespace>资源反序列化 反序列化并打印 Kubernetes 资源:kubectl get <resource-type> <resource-name> -n <namespace> -o=json网络信息显示命名空间中 Pod 的 IP 地址:kubectl get pods -n <namespace> -o custom-columns=POD:metadata.name,IP:status.podIP --no-headers列出命名空间中的所有网络策略:kubectl get networkpolicies -n <namespace>查看一个网络策略详情:kubectl describe networkpolicy <network-policy-name> -n <namespace>Ingress和服务网格列出命名空间中的所有Ingress:kubectl get ingress -n <namespace>查看一个Ingress详情:kubectl describe ingress <ingress-name> -n <namespace>列出命名空间中的所有 VirtualServices (Istio):kubectl get virtualservices -n <namespace>查看一个 VirtualService (Istio)详情:kubectl describe virtualservice <virtualservice-name> -n <namespace>节点诊断获取特定节点上运行的 Pod 列表:kubectl get pods --field-selector spec.nodeName=<node-name> -n <namespace>Pod 网络故障排除运行网络诊断 Pod(例如 busybox)进行调试:kubectl run -it --rm --restart=Never --image=busybox net-debug-pod -- /bin/bash测试从 Pod 到特定端点的连接:kubectl exec -it <pod-name> -n <namespace> -- curl <endpoint-url>跟踪从一个 Pod 到另一个 Pod 的网络路径:kubectl exec -it <source-pod-name> -n <namespace> -- traceroute <destination-pod-ip>检查 Pod 的 DNS 解析:kubectl exec -it <pod-name> -n <namespace> -- nslookup <domain-name>资源使用情况资源配额和限制列出命名空间中的资源配额:kubectl get resourcequotas -n <namespace>查看一个资源配额详情:kubectl describe resourcequota <resource-quota-name> -n <namespace>自定义资源定义 (CRD)列出命名空间中的自定义资源:kubectl get <custom-resource-name> -n <namespace>查看自定义资源详情:kubectl describe <custom-resource-name> <custom-resource-instance-name> -n <namespace>使用这些命令时,请记住将<namespace>, <pod-name>, <service-name>, <deployment-name>, <statefulset-name>, <configmap-name>, <secret-name>, <namespace-name>, <pv-name>, <pvc-name>, <node-name>, <network-policy-name>, <resource-quota-name>, <custom-resource-name>, 和替换为你的特定值。<custom-resource-instance-name>这些命令应该可以帮助你诊断 Kubernetes 集群以及在其中运行的应用程序。资源伸缩和自动伸缩Deployment伸缩:kubectl scale deployment <deployment-name> --replicas=<replica-count> -n <namespace>设置Deployment的自动伸缩:kubectl autoscale deployment <deployment-name> --min=<min-pods> --max=<max-pods> --cpu-percent=<cpu-percent> -n <namespace>检查水平伸缩器状态:kubectl get hpa -n <namespace>配置和资源验证验证 Kubernetes YAML 文件而不应用它:kubectl apply --dry-run=client -f <yaml-file>验证 pod 的安全上下文和功能:kubectl auth can-i list pods --as=system:serviceaccount:<namespace>:<serviceaccount-name>安全和授权RBAC和安全性列出命名空间中的角色和角色绑定:kubectl get roles,rolebindings -n <namespace>查看角色或角色绑定详情:kubectl describe role <role-name> -n <namespace>Pod 安全策略 (PSP) 列出所有 Pod 安全策略(如果启用):kubectl get psp事件:查看最近的集群事件:kubectl get events --sort-by=.metadata.creationTimestamp按特定命名空间过滤事件:kubectl get events -n <namespace>Pod 安全标准(PodSecurity 准入控制器) 列出 PodSecurityPolicy (PSP) 违规行为:kubectl get psp -A | grep -vE 'NAME|REVIEWED'服务帐户列出命名空间中的服务帐户:kubectl get serviceaccounts -n <namespace>查看一个服务帐户详情:kubectl describe serviceaccount <serviceaccount-name> -n <namespace>清空节点和解除封锁清空节点以进行维护:kubectl drain <node-name> --ignore-daemonsets解除对节点的封锁:kubectl uncordon <node-name>资源清理强制删除 pod(不推荐):kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force节点故障排除检查节点情况:kubectl describe node <node-name> | grep Conditions -A5列出节点容量和可分配资源:kubectl describe node <node-name> | grep -E "Capacity|Allocatable"临时容器 运行临时调试容器:kubectl debug -it <pod-name> -n <namespace> --image=<debug-image> -- /bin/sh资源指标 获取 Pod 的 CPU 和内存使用情况:kubectl top pod -n <namespace>kuelet诊断 查看节点上的kubelet日志:kubectl logs -n kube-system kubelet-<node-name>使用Telepresence 进行高级调试 使用 Telepresence 调试 pod:telepresence --namespace <namespace> --swap-deployment <pod-name>Kubeconfig 和上下文列出可用的上下文:kubectl config get-contexts切换到不同的上下文:kubectl config use-context <context-name>Pod 中断预算 (PDB)列出命名空间中的所有 PDB:kubectl get pdb -n <namespace>查看一个PDB详情:kubectl describe pdb <pdb-name> -n <namespace>资源锁诊断(如果使用资源锁)列出服务的服务端点:kubectl get endpoints <service-name> -n <namespace>检查 Pod 中的 DNS 配置:kubectl exec -it <pod-name> -n <namespace> -- cat /etc/resolv.conf自定义指标(Prometheus、Grafana) 查询Prometheus指标:用于kubectl port-forward访问Prometheus和Grafana服务来查询自定义指标。节点条件 自定义查询输出:kubectl get nodes -o custom-columns=NODE:.metadata.name,READY:.status.conditions[?(@.type=="Ready")].status -l 'node-role.kubernetes.io/worker='审核日志 检索审核日志(如果启用):检查 Kubernetes 审核日志配置以了解审核日志的位置。节点操作系统详细信息获取节点的操作系统信息:kubectl get node <node-name> -o jsonpath='{.status.nodeInfo.osImage}'这些命令应该涵盖 Kubernetes 中的各种诊断场景。确保将、、等占位符替换为集群和用例的实际值。其他诊断命令
2025年09月20日
13 阅读
0 评论
0 点赞
2025-09-14
journalctl——systemd日志查询工具详解
journalctl是systemd日志系统的查询工具。当你某个服务启动失败或出现错误时,系统会提示你使用这个工具来排查。使用grep、awk这类工具对日志进行处理时,可能遇到下面的情况导致排查困难。日志文件太大,grep半天没反应想看某个时间段的日志,结果要写一堆复杂的正则表达式系统重启后,之前的日志找不到了想看某个服务的完整日志链路,结果要翻好几个不同的文件基础用法直接使用journalctl命令,会看到系统从启动开始的所有日志。不过这样看起来会很乱,而且信息量巨大。加个-f参数,就像tail -f一样,可以实时显示最新的日志。当怀疑某个服务有问题的时候,开着这个命令,然后去操作一下,立马就能看到相关的日志输出。按时间查看日志#查看今天的日志 journalctl --since today #或者看昨天的: journalctl --since yesterday #看某个时间段的 journalctl --since "2024-01-15 14:00:00" --until "2024-01-15 15:00:00"按服务查看日志#只看nginx服务的日志 journalctl -u nginx #实时监控某个服务: journalctl -u nginx -f #有时候一个服务重启了好几次,你想看它的历史记录: journalctl -u nginx --since "1 hour ago"进阶技巧按优先级过滤#只显示错误级别的日志 journalctl -p err查看内核日志journalctl -k该命令等同于dmesg,但是journalctl的输出格式更友好,而且可以结合其他参数使用。按进程ID查看 有时候你知道某个进程有问题,可以直接按PID查看:journalctl _PID=1234查看启动信息 想看系统启动过程中发生了什么:journalctl -b如果系统重启过多次,你想看上一次启动的日志:journalctl -b -1这个功能在排查系统启动异常时特别有用。高级功能JSON格式输出 有时候你需要程序化处理日志,可以用JSON格式:journalctl -u nginx -o json这样输出的每一行都是一个JSON对象,方便后续处理。查看磁盘使用情况 journal日志会占用磁盘空间,你可以查看当前使用情况:journalctl --disk-usage如果空间不够,可以清理旧日志:journalctl --vacuum-time=7d只保留最近7天的日志。导出日志 有时候需要把日志发给其他人分析:journalctl -u myapp --since today > app_logs.txt反向查看日志 从最新的日志开始看:journalctl -r这个在查看最近发生的问题时很有用。配置优化持久化存储 默认情况下,有些系统的journal日志是存储在内存中的,重启后就丢失了。要启用持久化存储:sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald限制日志大小 编辑/etc/systemd/journald.conf:SystemMaxUse=1G SystemMaxFileSize=100M这样可以避免日志占用太多磁盘空间。常见问题和解决方案日志查看权限问题 有时候普通用户看不到某些日志,需要加入systemd-journal组:sudo usermod -a -G systemd-journal username日志时间显示问题 如果时间显示不对,可能是时区设置问题:journalctl --utc使用UTC时间显示。性能问题 如果journalctl查询很慢,可能是因为日志文件太大。可以考虑:清理旧日志调整日志级别使用更精确的过滤条件一些小技巧# 查看最近的错误日志,按时间倒序 journalctl -p err -r --since "1 hour ago" # 查看某个用户的所有日志 journalctl _UID=1000 # 查看系统启动耗时 systemd-analyze blame
2025年09月14日
21 阅读
0 评论
0 点赞
2025-09-13
curl与wget详解
curl简介全称是"Client URL",顾名思义就是一个URL客户端工具。它最大的特点就是支持的协议特别多,HTTP、HTTPS、FTP、FTPS、SCP、SFTP、LDAP等等,基本上你能想到的网络协议它都支持。curl测试API接口非常方便。比如说要测试一个REST API,用curl简直不要太方便:[root@webtest ~]# curl -X GET https://v2.jinrishici.com/token {"status":"success","data":"5w1dZp7lNh+NpR0Ws6OG6TGCqp/2UgMf"}这样就能快速看到接口返回的数据,比打开浏览器或者用Postman要快多了。curl还有个很牛的地方就是它的参数特别丰富,几乎可以模拟任何HTTP请求。想要发送POST请求?没问题:curl -X POST -H "Content-Type: application/json" -d '{"name":"张三","age":25}' https://api.example.com/users需要带认证信息?也很简单:curl -u username:password https://api.example.com/protected 或者用Bearer token: curl -H "Authorization: Bearer your_token_here" https://api.example.com/datawgetwget简介wgetwget的全称是"Web Get",它主要是用来从网络上获取文件的。相比curl,wget更专注于下载这一件事,在下载方面它做得确实很出色。wget有个递归下载功能。有一次需要备份一个静态网站,用wget一条命令就搞定了:wget -r -np -k -L -p https://example.com/这条命令会把整个网站都下载下来,包括CSS、JS、图片等所有资源,而且还会自动调整链接,下载完直接就能在本地打开。wget还有个很实用的功能就是断点续传。下载大文件的时候网络断了不用担心,加个-c参数就能接着下载:wget -c https://example.com/bigfile.zip 这个功能在网络不稳定的时候简直是救命稻草。两者的主要区别在哪里?最大的区别就是设计理念不同。curl更像是一个瑞士军刀,什么都能干,但是每样都不是最专业的;wget就像是一个专业的下载工具,在下载这件事上做得特别精细。从使用场景来说,一般是这样选择的:需要测试API、发送复杂HTTP请求的时候用curl单纯下载文件,特别是大文件或者需要递归下载的时候用wget需要在脚本里处理HTTP响应数据的时候用curl需要镜像整个网站或者批量下载的时候用wgetcurl的高级用法说到curl的高级用法,那可真是太多了。我经常用到的几个技巧分享给大家:保存响应头信息有时候需要查看服务器返回的头信息,可以用-I参数:curl -I https://www.baidu.com或者既要响应体又要响应头:curl -i https://api.example.com/data 跟随重定向默认情况下curl不会跟随重定向,需要加-L参数:curl -L https://short.url/abc123 设置超时时间网络不好的时候设置个超时时间很有必要:curl --connect-timeout 10 --max-time 30 https://slow.server.com使用代理需要通过代理访问的时候:curl --proxy http://proxy.server:8080 https://example.com 上传文件curl还能上传文件,这个功能很多人不知道:curl -X POST -F "file=@/path/to/file.txt" https://upload.example.com保存和使用Cookie处理需要登录的网站时,Cookie管理很重要:#保存cookie curl -c cookies.txt -d "username=admin&password=123456" https://example.com/login # 使用cookie curl -b cookies.txt https://example.com/protectedwget的实用技巧wget虽然看起来简单,但是用好了也很强大。限制下载速度在服务器上下载大文件的时候,为了不影响其他服务,可以限制下载速度:wget --limit-rate=200k https://example.com/bigfile.zip后台下载下载大文件时可以放到后台运行:wget -b https://example.com/hugefile.iso下载进度会保存在wget-log文件里,可以用tail命令查看: tail -f wget-log批量下载有个URL列表文件的话,可以批量下载:wget -i urls.txturls.txt文件里每行一个URL就行。设置重试次数网络不稳定的时候可以设置重试:wget --tries=3 --waitretry=2 https://unstable.server.com/file.zip递归下载的高级选项递归下载网站的时候,有很多参数可以控制行为:wget -r -np -nd -A "*.pdf" -R "*.html" https://example.com/documents/这条命令会递归下载所有PDF文件,但是排除HTML文件,而且不创建目录结构。实际工作中的应用场景监控网站可用性写个简单的脚本监控网站是否正常:#!/bin/bash response=$(curl -s -o /dev/null -w "%{http_code}" https://mywebsite.com) if [ $response -eq 200 ]; then echo "网站正常" else echo "网站异常,状态码:$response" fi自动化部署脚本部署的时候经常需要下载最新的安装包:#!/bin/bash # 获取最新版本号 latest_version=$(curl -s https://api.github.com/repos/user/project/releases/latest | grep tag_name | cut -d '"' -f 4) # 下载最新版本 wget https://github.com/user/project/releases/download/${latest_version}/project-${latest_version}.tar.gz API接口测试 测试POST接口的时候,curl特别方便: # 测试用户注册接口 curl -X POST \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "email": "test@example.com", "password": "123456" }' \ https://api.example.com/register文件备份定期备份重要文件到远程服务器:#!/bin/bash # 打包文件 tar -czf backup-$(date +%Y%m%d).tar.gz /important/data/ # 上传到远程服务器 curl -T backup-$(date +%Y%m%d).tar.gz ftp://backup.server.com/backups/ --user username:password常见问题和解决方案用这两个工具的时候,经常会遇到一些问题,常见的几个:SSL证书问题有时候遇到自签名证书或者证书有问题的网站,可以跳过证书验证:# curl跳过证书验证 curl -k https://self-signed.example.com # wget跳过证书验证 wget --no-check-certificate https://self-signed.example.com/file.zip不过这样做有安全风险,生产环境要谨慎使用。中文文件名乱码下载中文文件名的文件时可能会乱码,可以设置编码:wget --restrict-file-names=nocontrol https://example.com/中文文件.zip大文件下载超时下载大文件时经常会超时,可以调整超时设置:# curl设置超时 curl --connect-timeout 30 --max-time 3600 -O https://example.com/bigfile.zip # wget设置超时 wget --timeout=30 --read-timeout=3600 https://example.com/bigfile.zip
2025年09月13日
10 阅读
0 评论
0 点赞
1
2
...
19