我常用的几个命令行小工具
在服务器上排查问题,大部分时间都花在命令行里。下面这几个工具是我每台机器都会装的,体积小,学习成本低,但能节省很多时间。
ripgrep(rg):更快的 grep
rg "notify_url" # 在当前目录递归搜索
rg -t js "TODO" # 只搜索 JS 文件
rg -l "password" # 只列出文件名
比 grep 快得多,默认会忽略 .gitignore 中的文件和 node_modules,输出也带有颜色和行号。
fd:更好用的 find
fd config # 按文件名查找
fd -e log -x rm # 查找所有 .log 文件并删除
不需要再记 find . -name "*config*" -type f 这样冗长的语法。注意在 Ubuntu 上安装后命令名叫 fdfind,可以设置一个别名。
jq:处理 JSON
curl -s https://api.example.com/users | jq '.data[] | {id, name}'
cat app.log | jq 'select(.level == "error")'
调试接口、查看 JSON 格式的日志时非常方便。
ncdu:磁盘空间分析
ncdu /
磁盘快满时,用它可以交互式地逐层查看哪个目录最占空间,比 du -sh * 一层一层地找快得多。常见的"罪魁祸首"有:日志文件、Docker 镜像、npm 缓存、旧的备份文件。
htop:进程查看
比 top 更直观,支持鼠标操作,可以按 CPU、内存排序,也可以直接对进程发送信号。
mtr:网络诊断
mtr example.com
相当于 ping 和 traceroute 的结合,能实时显示到达目标的每一跳的丢包率和延迟。网站访问慢的时候,可以判断问题出在哪一段网络上。
tldr:命令速查
tldr tar
tldr rsync
man 手册太长,tldr 只给出最常用的几个示例。记不清 tar 的参数时特别有用。
安装
# Ubuntu / Debian
sudo apt install ripgrep fd-find jq ncdu htop mtr-tiny tldr
# macOS
brew install ripgrep fd jq ncdu htop mtr tldr
这些工具在大部分发行版的软件源中都有,安装只需要一条命令。