一、文件操作:运维的基石

文件操作是运维工作中最基础也最频繁的需求。无论是查看日志、修改配置还是备份数据,都离不开这些命令。

  1. ls命令 - 查看目录内容
# 查看当前目录下所有文件和子目录(含隐藏文件)
ls -al

# 按修改时间倒序排列,常用于找最新文件
ls -lt
  1. grep命令 - 文本搜索神器
# 在nginx日志中搜索404错误
grep "404" /var/log/nginx/access.log

# 递归搜索目录下所有Java文件中的关键字
grep -r "ConnectionPool" /opt/project/src/main/java/
  1. find命令 - 文件查找专家
# 查找7天前修改过的.log文件
find /var/log -name "*.log" -mtime +7

# 查找大于100MB的文件并显示详情
find / -size +100M -exec ls -lh {} \;

二、系统监控:掌握服务器状态

了解系统运行状态是运维的基本功,这些命令能帮你快速诊断问题。

  1. top命令 - 实时系统监控
# 基本用法(按q退出)
top

# 按内存使用排序(大写M)
top -o %MEM
  1. df/du命令 - 磁盘空间管理
# 查看磁盘使用情况(人类可读格式)
df -h

# 查看指定目录大小
du -sh /var/lib/mysql/
  1. netstat/ss命令 - 网络连接分析
# 查看所有TCP连接(新系统推荐用ss)
netstat -tulnp
ss -tulnp

# 查看指定端口的连接
netstat -an | grep 3306

三、进程管理:服务的生命线

服务进程的管理直接关系到业务连续性,这些命令必须熟练掌握。

  1. ps命令 - 进程快照
# 查看所有进程完整信息
ps -ef

# 查看Java进程的CPU和内存使用
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | grep java
  1. kill命令 - 进程控制
# 优雅停止Nginx(发送SIGTERM信号)
kill -15 $(pgrep nginx)

# 强制杀死卡死的进程(SIGKILL信号)
kill -9 12345
  1. systemctl命令 - 服务管理
# 查看MySQL服务状态
systemctl status mysql

# 重启Apache服务
systemctl restart httpd

四、实用技巧:效率提升法宝

这些技巧能让你事半功倍,成为团队中的高效运维。

  1. 管道符组合技
# 统计日志中每个IP的访问次数
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr

# 找出占用CPU最高的前5个进程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6
  1. 后台运行与日志记录
# 后台运行脚本并记录输出
nohup ./deploy.sh > deploy.log 2>&1 &

# 查看后台任务
jobs -l
  1. 定时任务管理
# 编辑当前用户的定时任务
crontab -e

# 查看系统所有定时任务(需要root)
cat /etc/crontab

五、安全相关:不可忽视的要点

运维安全无小事,这些命令帮你守住底线。

  1. 权限管理
# 修改文件属主为www-data
chown www-data:www-data /var/www/html/

# 给脚本添加执行权限
chmod +x backup.sh
  1. 登录审计
# 查看最近登录用户
last

# 查看失败登录尝试
grep "Failed password" /var/log/auth.log
  1. 防火墙管理
# 查看防火墙规则(CentOS)
iptables -L -n

# 开放8080端口(Ubuntu)
ufw allow 8080/tcp

六、应用场景与技术选型

在实际工作中,不同场景需要选择不同的命令组合:

  1. 故障排查场景:
  • 先用top看整体负载
  • 再用iotop/dstat找I/O瓶颈
  • 最后用strace追踪具体进程
  1. 日志分析场景:
  • grep过滤关键错误
  • awk/sed提取特定字段
  • sort/uniq做数据统计
  1. 性能优化场景:
  • vmstat查看系统瓶颈
  • sar分析历史数据
  • perf定位代码热点

七、注意事项与经验分享

  1. 危险命令慎用:
  • rm -rf /
  • dd if=/dev/random
  • :(){ :|:& };:
  1. 推荐使用绝对路径:
  • 脚本中避免使用相对路径
  • 关键操作先echo确认
  1. 养成良好习惯:
  • 重要操作前先备份
  • 复杂命令先测试
  • 长期任务用screen/tmux

八、总结与展望

掌握这些命令只是运维工作的起点,真正的功力在于:

  1. 根据场景灵活组合命令
  2. 将常用操作脚本化
  3. 建立自己的命令知识库

未来可以进一步学习:

  • 自动化运维工具(Ansible/Puppet)
  • 容器化技术(Docker/K8s)
  • 云原生监控体系

记住:命令是工具,解决问题才是目的。希望这份汇总能成为你运维路上的实用参考。