我的博客

我常用的几个命令行小工具

在服务器上排查问题,大部分时间都花在命令行里。下面这几个工具是我每台机器都会装的,体积小,学习成本低,但能节省很多时间。

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

这些工具在大部分发行版的软件源中都有,安装只需要一条命令。