资源 Shell
Shell 运维命令速查手册:从文本搜索、进程管理到网络诊断
这篇是当年运维自己机器时积累的 Shell 命令速查,按「查东西、看资源、跑任务、修网络」四大场景分组。命令行工具的特点是一个个都简单,组合起来才有威力——但前提是你得在需要的那一秒想得起来。
文本与文件
文本内容搜索
bash
grep aaa * # 在当前目录所有文件中搜索内容文件与磁盘空间
bash
du -h --max-depth=1 /home/ys # 查看目录下各子目录大小(人性化单位)
du -h --max-depth=1 . # 当前目录版本
df -h # 查看所有磁盘分区使用情况压缩与解压
bash
tar zxvf aaa.tar.gz # 解压
tar zcvf aaa.tar.gz aaa # 打包压缩时间处理
bash
date # 当前时间
date +%s # 当前时间戳(秒)
date -d "2010-07-20 10:25:30" +%s # 指定时间转时间戳
date -d "@1279592730" # 时间戳转时间
date -d "1970-01-01 14781 days" "+%Y/%m/%d %H:%M:%S" # 纪元起算 N 天后的日期@时间戳 这个语法最实用,日志里捞出一串毫秒/秒级时间戳时直接转人类可读格式。
进程与端口
查看端口占用
bash
lsof -i:8087 # 查看占用 8087 端口的进程
lsof -i # 查看本地网络服务活动状态进程内存使用
bash
top -d 1 -p pid [,pid ...] # 每秒刷新,监控指定进程
pmap pid # 查看进程内存映射
ps aux | grep process_name # 按名称过滤进程更底层的还有 /proc/process_id/status 文件,内核暴露的进程状态第一手信息。
批量杀死进程
bash
ps -aux | grep name | grep -v grep | cut -c 9-15 | xargs kill -9管道流水线:找到目标进程 → 过滤掉 grep 自身 → 截取 PID 列 → 交给 kill。第二个 grep -v grep 是关键,否则会误杀 grep 进程。
查看进程执行时长
bash
ps -A -opid,stime,etime,args | grep pythonetime 是存活时长,判断「进程是不是刚重启过」一眼便知。
系统版本
bash
lsb_release -a # 发行版信息
uname -a # 内核版本后台任务
创建守护进程
bash
nohup python /var/www/a.py & # 挂起运行,退出终端不中断screen 会话
bash
screen -d -m -S some_name ping my_router # 后台建立会话执行命令,可随时接入查看screen 比 nohup 多一层价值:任务跑在独立会话里,断线后能 screen -r 接回现场,长任务必备。
在远程机器上运行本地脚本
bash
ssh user@server bash < /path/to/local/script.shstdin 重定向的经典应用:脚本不用先拷贝过去,直接通过 SSH 管道喂给远端的 bash。
网络
诊断网络
bash
mtr # 结合 ping 与 traceroute,实时显示链路丢包
ping # 连通性
traceroute # 路由路径
dig # DNS 解析查看本机监听端口
bash
netstat -tlnp # 监听中的 TCP 端口与对应进程
netstat -anop # 全部连接状态查看外网 IP
bash
curl ifconfig.me端口扫描
bash
nc -z -v -n 127.0.0.1 20-100 # 扫描 20-100 端口是否开放下载整个网站
bash
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com--random-wait 随机间隔避免请求过密,仅用于离线存档自己有权限的内容。
负载测试
bash
# 30 秒内向目标发起 20 个并发连接
siege -c20 www.example.com -b -t30s安全
封禁一个 IP 的访问
bash
iptables -I INPUT -s 211.1.0.0 -j DROP # 丢弃来自该 IP 的所有入站包应急场景:发现异常扫描或爆破来源时先行封禁,再走正规治理流程。
一句话 HTTP 服务
bash
python -m SimpleHTTPServer # 以当前目录为根启动 HTTP 服务临时共享文件、快速预览静态页面的最快方式,无需任何配置。
写在后面
这些命令今天依然几乎全部可用,变化的主要是生态位:netstat 的新机器上推荐 ss,SimpleHTTPServer 在 Python 3 里是 python -m http.server,iptables 之外又有了 nftables。但速查表的编排逻辑不会过时——按「我要解决什么问题」组织命令,而不是按字母序背手册。