找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1531

积分

0

好友

225

主题
发表于 3 天前 | 查看: 9| 回复: 0

在现代化软件交付过程中,熟练使用终端命令是每一位DevOps工程师提升自动化水平与排障效率的核心技能。本文系统性整理了100个在真实工作流中高频使用的命令,涵盖基础设施管理、容器化编排、CI/CD流水线、监控诊断等关键环节,并结合典型应用场景进行解读,旨在构建你的命令行工具箱。

一、基础设施与文件管理

  1. ls -al:列出目录详情,包括文件权限、所有者、时间戳等完整信息。
  2. cd ~/project:快速切换至常用项目工作目录。
  3. mkdir -p logs/{app,db}:递归创建多层目录结构,适用于初始化日志目录。
  4. rsync -avz ./dist user@prod:/opt/app:增量同步文件,比scp更高效,常用于部署。
  5. find /var/log -name "*.log" -mtime -7:搜索/var/log目录下最近7天内修改过的日志文件。
  6. chmod 755 deploy.sh:赋予Shell脚本可执行权限。
  7. ln -s /data/config app-config:创建软链接,实现配置与应用的解耦。
  8. tar -czvf app-backup-$(date +%F).tar.gz /opt/app:创建带有当前日期的压缩归档文件,用于备份。
  9. df -Th:显示磁盘分区的使用情况及文件系统类型。
  10. du -sh * | sort -hr:统计并按照大小逆序排列当前目录下各子目录/文件的占用空间。

二、容器与编排

  1. docker build -t app:v1 .:根据当前目录的Dockerfile构建一个名为app:v1的镜像。深入云原生技术栈,容器化是基础。
  2. docker run -d -p 8080:80 --name web app:v1:在后台运行容器,并将容器内80端口映射到宿主机8080端口。
  3. docker-compose up -d --build:启动并重新构建docker-compose.yml中定义的所有服务。
  4. kubectl apply -f k8s/deployment.yaml:声明式地应用或更新Kubernetes资源配置。
  5. kubectl logs -f pod/app --tail=100:实时流式输出指定Pod最后100行日志。
  6. kubectl rollout restart deployment/app:滚动重启Deployment,实现零停机更新。
  7. docker image prune -f:强制清理所有未被使用的虚悬镜像,释放磁盘空间。
  8. docker exec -it db psql -U admin:以交互模式进入名为db的容器,并执行psql命令连接数据库。

三、配置管理与版本控制

  1. git clone --branch feat/ci git@repo-url:克隆远程仓库的指定分支。
  2. git checkout $(Build.SourceBranchName):在CI/CD流水线中动态签出触发构建的分支(例如Azure DevOps变量)。
  3. git tag -a v2.0 -m “Release” && git push --tags:创建附注标签并推送到远程仓库。
  4. ansible-playbook -i hosts deploy.yml --extra-vars “env=prod”:使用Ansible剧本进行多环境部署。
  5. sed -i ‘s/DEBUG=false/DEBUG=true/g’ .env:直接编辑文件,批量替换配置文件中的值。
  6. jq ‘.config.timeout = 30’ params.json > tmp.json:使用jq工具动态修改JSON文件中的参数。

四、CI/CD流水线核心命令

  1. jenkins-job-build deploy-prod --token=API_KEY:通过API远程触发Jenkins上的指定任务。
  2. mvn clean package -DskipTests:Maven跳过测试阶段进行快速构建,适用于紧急修复。
  3. pytest --cov=app tests/ > coverage.xml:运行Python测试并生成覆盖率报告文件。
  4. sonar-scanner -Dsonar.login=token:执行代码质量扫描并将结果上报至SonarQube。
  5. scp target/app.jar user@staging:/opt:将构建产物安全复制到预发布环境服务器。
  6. curl -X POST http://api/reload --cert client.pem:使用客户端证书进行HTTPS认证,触发API服务重载。

五、监控、日志与诊断

  1. grep -r “OutOfMemoryError” /logs --include=*.log:递归搜索/logs目录下所有.log文件中的内存溢出错误。
  2. tail -f /var/log/nginx/access.log | awk ‘{print $1}’:实时跟踪Nginx访问日志并提取客户端IP地址。
  3. awk ‘$9 == 502 {count++} END {print count}’ access.log:统计日志文件中HTTP状态码为502的错误次数。
  4. netstat -tulpn | grep :80:检查本地80端口被哪个进程监听占用。
  5. top -o %MEM:启动top并默认按内存使用率降序排列进程。
  6. vmstat 2 10:每2秒采样一次系统状态(内存、进程、IO等),共采样10次。
  7. tcpdump -i eth0 port 3306 -w mysql.pcap:捕获网卡eth0上端口3306的流量并保存,用于分析数据库通信。

命令组合示例:快速定位生产问题

# 统计每分钟请求量,用于分析流量骤降
awk -F: ‘{print $2“:“$3}’ access.log | uniq -c | sort -k1

# 检查哪些容器内存使用率超过80%
docker stats --no-stream | awk ‘$2 ~ /GB/ && $6 > 80’

六、网络与安全

  1. ssh -i key.pem user@host -L 3306:localhost:3306:建立SSH隧道,将远程主机的3306端口映射到本地。
  2. openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem:快速生成自签名的SSL证书和私钥,用于测试。
  3. iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT:配置防火墙,仅允许指定网段访问SSH端口。
  4. nmap -sV 10.0.0.0/24:扫描指定网段,探测主机存活及服务版本信息。
  5. chage -M 90 -W 7 deploy-user:为用户设置密码策略,强制90天更换,并在到期前7天警告。

七、自动化与调度

  1. crontab -e:编辑当前用户的定时任务列表,例如设置每日凌晨备份。
  2. at 02:00 <<< “tar -czf /backup/nightly.tar.gz /data”:调度一个在凌晨2点执行的单次压缩备份任务。
  3. watch -n 5 ‘kubectl get pods | grep Pending’:每5秒执行一次命令,监控处于Pending状态的Pod。
  4. alias klogs=‘kubectl logs -f’:为长命令创建别名,提升日常操作效率。

八、云服务与API集成

  1. aws s3 cp build.zip s3://bucket/v1/ --acl private:将本地文件上传至AWS S3存储桶并设为私有。
  2. az vm start --name prod-vm --resource-group prod-rg:启动Azure云上的指定虚拟机。
  3. gcloud compute instances create --image-family ubuntu-2004-lts:在Google Cloud Platform上创建一个Ubuntu 20.04 LTS的虚拟机实例。
  4. terraform apply -auto-approve:自动批准并执行Terraform计划,实现基础设施即代码(IaC)的变更。

九、高级日志分析

  1. multitail -cS syslog /var/log/syslog:分屏实时追踪多个日志文件,并按Syslog语法高亮显示。
  2. journalctl -u nginx --since “1 hour ago”:查询由systemd管理的Nginx服务最近一小时的日志。
  3. grep -E “50[0-5]” access.log | awk ‘{print $7}’ | sort | uniq -c:统计服务器5XX错误对应的URL及其发生频率。
  4. logrotate -f /etc/logrotate.d/nginx:强制立即执行一次Nginx的日志轮转,用于测试配置。
  5. zcat access.log.*.gz | awk ‘{print $1}’ | sort | uniq -c | sort -nr:解压并分析所有压缩的旧日志,按访问次数排序IP地址。

十、进程管理与服务控制

  1. systemctl daemon-reload:重载systemd守护进程配置,在修改服务单元文件后必须执行。
  2. systemctl restart nginx:重启systemd服务,通常支持平滑重启。
  3. supervisorctl restart worker:*:批量重启所有以worker:开头的Supervisor托管进程。
  4. pkill -f “celery worker”:根据进程名称模式,终止所有匹配的进程。
  5. kill -HUP $(cat /run/nginx.pid):向Nginx主进程发送HUP信号,实现优雅重载配置。
  6. lsof -p 1234:列出进程ID为1234所打开的所有文件。
  7. fuser -k 8080/tcp:强制终止所有占用8080端口的进程。

十一、性能调优与诊断

  1. sar -u 2 5:每2秒采样一次CPU使用情况,共采样5次(需安装sysstat包)。
  2. iostat -dx 2:每2秒报告一次扩展的磁盘I/O统计信息(延迟、吞吐量)。
  3. pidstat -d 1:每秒报告一次各个进程的磁盘I/O使用情况。
  4. vmstat 1:实时(每秒)输出虚拟内存统计、进程、CPU活动等信息。
  5. mpstat -P ALL 1:显示每个CPU核心的详细利用率。
  6. perf top -g -p 1234:实时剖析指定进程(1234)的函数级CPU消耗情况。
  7. strace -ff -p 5678:追踪进程(5678)及其子进程的所有系统调用,用于调试进程卡死。
  8. tcpdump -i eth0 -s0 -w dump.pcap ‘port 5432’:完整抓取(-s0)网卡eth0上5432端口(PostgreSQL)的流量包。

十二、数据库运维

  1. pg_dump -Fc mydb > db.dump:将PostgreSQL数据库以自定义格式备份,支持压缩和并行恢复。
  2. pg_restore -j 4 -d newdb db.dump:使用4个并行作业将备份恢复到新数据库。
  3. mysqladmin -u root status:快速检查MySQL数据库服务的运行状态。
  4. mysqldump --single-transaction --routines mydb > backup.sql:对InnoDB表进行在线备份,并包含存储过程和函数。
  5. redis-cli --latency-history -i 5:每5秒采样一次Redis服务器的延迟历史数据。
  6. mongo --eval “db.stats()”:连接到MongoDB并执行命令,获取数据库统计信息。

十三、包管理与依赖

  1. apt-cache policy nginx:查看Ubuntu/Debian系统上Nginx软件包的可用版本和安装状态。
  2. yum history undo 23:回滚Yum/DNF历史上ID为23的软件包安装或更新事务。
  3. pip freeze > requirements.txt:生成当前Python虚拟环境的精确依赖列表。
  4. npm ci:根据package-lock.json文件严格安装Node.js依赖,确保环境一致性。
  5. go mod tidy:清理Go模块的go.mod文件,移除无用依赖,添加缺失依赖。

十四、Shell进阶与脚本

  1. set -euxo pipefail:Bash脚本的安全头部设置(错误退出、显示变量、管道错误检测)。
  2. ${variable:-default_value}:参数扩展,当变量为空时使用默认值。
  3. read -p “Enter version: “ ver:在脚本中提供提示,交互式读取用户输入。
  4. for ip in $(cat servers.txt); do ssh $ip “hostname”; done:遍历服务器列表文件,在每台服务器上执行hostname命令。
  5. (time curl -s https://api.status) 2>&1 | grep real:测量一个API请求的实际耗时。
  6. trap “rm -f /tmp/lockfile; exit 1” SIGINT SIGTERM:设置信号捕获,在脚本被中断时执行清理操作。

十五、安全与合规

  1. openssl s_client -connect example.com:443 -servername example.com:连接服务器并检查SSL/TLS证书链的详细信息。
  2. ssh-keygen -p -f ~/.ssh/id_rsa:更改现有SSH私钥的密码,而不改变公钥。
  3. umask 027:设置默认的权限掩码,使新建文件权限为640,目录权限为750。
  4. getfacl /etc/secrets | setfacl --set-file=- /backup/secrets:备份文件的ACL权限信息,并原样应用到备份文件。
  5. auditd -l | grep EACCES:查询Linux审计日志中关于权限拒绝的记录。

十六、云原生与Serverless

  1. kubectl get events --field-selector type=Warning --sort-by=.lastTimestamp:获取Kubernetes集群中最近的警告事件并排序。
  2. kubectl top pod --containers:显示Pod内容器级别的CPU和内存资源使用情况。
  3. kn service create my-svc --image docker.io/user/app:v1:使用Knative CLI部署一个无服务器服务。
  4. serverless deploy --stage prod:使用Serverless Framework将应用部署到生产环境阶段。
  5. aws lambda invoke --function-name my-func output.txt:同步调用一个AWS Lambda函数并将响应输出到文件。
  6. gcloud functions deploy --runtime python310 --trigger-http:部署一个由HTTP事件触发的Python 3.10 Google云函数。

十七、实用工具集锦

  1. jq ‘.resources[] | select(.type==“aws_instance”)’ terraform.tfstate:从Terraform状态文件中过滤出所有AWS EC2实例资源。
  2. bat -l yaml config/deploy.yaml:使用bat命令(cat的现代化替代品)语法高亮查看YAML配置文件。

DevOps命令使用黄金法则

  1. 环境隔离:使用环境变量而非硬编码配置。
    docker run -e “DB_HOST=${PROD_DB_HOST}” app:v2
  2. 幂等性保证:确保你的自动化脚本(如Ansible Playbook)支持重复安全执行。
    ansible-playbook deploy.yml
  3. 敏感信息零暴露:集成专业的密钥管理系统。关于安全最佳实践,可以参考云栈社区安全板块的讨论。
    # 示例:从Vault获取数据库密码
    curl -H “X-Vault-Token: $VAULT_TOKEN” http://vault:8200/v1/secret/data/db
  4. 执行可追溯:关键操作应记录审计日志。
    
    echo “$(date) - DEPLOY v1.2 by $USER” >> /var/log/deploy.log



上一篇:AI基础设施资本结构分析:高杠杆融资下的财务风险与应对
下一篇:删除Windows休眠文件hiberfil.sys释放C盘空间操作指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:11 , Processed in 0.198347 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表