Linux 运维常用命令速查:我真正每天在用的那些

命令不用背,按场景记。下面是我日常最高频的五个场景,每个场景给可直接复制的命令。

一、看资源:机器到底哪里不够

bash
df -h                       # 磁盘剩余(最常用)
du -sh /var/*  | sort -h    # 找出 /var 下谁最大
du -ah / | sort -rh | head -20    # 全盘 TOP20 大文件

free -h                     # 内存
top                         # 实时进程(按 P 按 CPU 排序,M 按内存)
htop                        # top 的加强版,能鼠标操作

uptime                      # 负载:三个数分别是 1/5/15 分钟平均
nproc                       # 核数,负载要跟核数对比才有意义
iostat -x 1                 # 磁盘 IO(sysstat 包)

负载 4.0 不可怕,关键看核数:8 核机器 4.0 很闲,2 核机器 4.0 已经在排队了。

二、看日志:出问题先来这里

bash
# systemd 服务的日志
journalctl -u nginx -f                    # 实时跟随
journalctl -u nginx --since "10 min ago"
journalctl -u nginx --since today | tail -100
journalctl -p err -b                      # 本次启动以来的错误

# 日志太大时清理
journalctl --disk-usage
sudo journalctl --vacuum-size=200M        # 保留最近 200MB
sudo journalctl --vacuum-time=7d          # 只保留 7 天

# 传统日志文件
tail -f /var/log/nginx/error.log
grep -n "error" /var/log/nginx/error.log | tail -20

三、找文件:定位配置和大文件

bash
find /etc -name "*.conf" 2>/dev/null
find /var/www -type f -mtime -1          # 一天内改过的文件
find / -size +500M -type f 2>/dev/null   # 大于 500M 的文件

grep -rn "listen" /etc/nginx/            # 递归搜内容
grep -rn "error" /var/log/ --include="*.log"

# 更快的替代(索引数据库,需先 updatedb)
sudo updatedb && locate nginx.conf

四、查网络:连不上到底卡在哪

bash
ss -lntp                    # 本机监听了哪些端口(比 netstat 快)
ss -antp | grep :443        # 谁在连 443

curl -I https://www.bzii.cn           # 只看响应头
curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" https://www.bzii.cn

ping -c 4 1.1.1.1           # 通不通
mtr 1.1.1.1                 # 看每一跳的丢包(比 traceroute 好用)

dig +short A www.bzii.cn      # DNS 解析
openssl s_client -connect www.bzii.cn:443 -servername www.bzii.cn < /dev/null | openssl x509 -noout -dates

最后那条是查证书到期时间,排查证书问题时非常顺手。

五、管进程与权限

bash
ps aux | grep nginx
pkill -f "node server.js"   # 按命令行模糊杀进程
kill -9 PID                 # 强杀,最后手段

chmod 600 key.pem           # 私钥必须 600,否则 SSH 会拒绝使用
chown -R www-data:www-data /var/www/baize

sudo -u www-data nginx -t   # 以某个用户身份执行,验证权限问题

六、几个能省很多时间的组合技

bash
# 实时看访问日志里的 TOP IP
tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn

# 批量替换配置文件内容
sed -i "s/old.domain/new.domain/g" /etc/nginx/sites-available/*.conf

# 后台跑长任务,关终端也不中断
nohup ./long-task.sh > task.log 2>&1 &

# 把远程目录打包拉回本地
ssh -p 2222 baize@host "tar czf - /var/www/baize" > backup.tar.gz

七、建议装在每台机器上的工具

工具用途
htop / btop资源监控,肉眼友好
mtr网络逐跳诊断
jq命令行处理 JSON
rsync增量同步与备份
tmux会话保持,断线不丢
ncdu交互式看磁盘占用
bash
apt install -y htop mtr jq rsync tmux ncdu

tmux 值得单独学五分钟:tmux new -s work 开会话,Ctrl+b d 脱离,tmux a -t work 回来。服务器上的长任务再也不会因为断网挂掉。