几年前第一次买 VPS 的时候,我连 SSH 是什么都不知道。阿里云上花 99 块钱买了一年的学生机,战战兢兢地输完 root 密码,面对黑底白字的终端发了五分钟呆。
那时候的感觉,怎么说呢——像被扔进了一片原始森林,手里连把砍刀都没有。

后来磕磕绊绊走了几年,踩过坑、删过库、半夜爬起来修过崩掉的 nginx,慢慢明白了一件事:命令行不可怕,可怕的是你不知道遇到问题该敲什么。
今天想聊聊几条我真正"救命"过的命令。不是什么高深技巧,但每条背后都有一段我不想再经历第二次的故事。
rsync:搬家时唯一靠得住的搬运工
2023 年我决定把博客从一台快过期的 VPS 搬到另一台。十几 GB 的文件,两万多篇文章的静态页面,还有一堆乱七八糟的配置。
第一次尝试是 tar 打包、scp 传输、再解压。网络断了三次,每次重来都要花半小时。第三次断的时候已经是凌晨两点,我盯着满屏的 "Connection reset by peer",感觉全世界都在针对我。
然后一个朋友在群里打了一行字:「为什么不 rsync?」
十分钟后,我的人生被这句简短的咒语改变了:
rsync -avzP /var/www/ user@new-server:/var/www/
断点续传、差异同步、还能看到进度条。断了就再跑一次,它自动跳过已经传完的文件。原来搬家这么简单的事情,我居然硬扛了两个晚上。

tmux:再也不会因为断网而崩溃
SSH 断连这件事,每个远程办公的人都懂。正在跑一个长达两小时的数据库迁移,Wi-Fi 闪了一下——全没了。你甚至不知道它跑了多少、还剩多少。
有人告诉我 tmux 能解决这个问题的时候,我看了半小时文档,觉得这也太复杂了。快捷键记不住、窗格分不清、配色丑得像上世纪的 BBS。
直到有一次我在火车上用手机热点连服务器跑一个不能中断的脚本。那一刻我才明白 tmux 不是"方便",是刚需。
tmux new -s work # 开一个不会丢的会话
# ... 在里面做任何事 ...
# 断线了?重新 SSH 上去:
tmux attach -t work # 一切如初
现在我的终端永远开着三四个 tmux 窗口。它就像一张不会被人掀翻的书桌——你可以随时离开,回来时一切还在原处。
history | grep:最笨但最常用的一条
别说你没遇到过这种事:上星期敲了一条特别复杂的命令,完美解决了问题。今天又要用,死活想不起来。
我花了大概两年才知道按 Ctrl+R 可以反向搜索历史。又花了一年才发现 Ctrl+R 搜不到的时候,这个可以:
history | grep rsync
它会列出你敲过的所有包含 rsync 的命令,包括上个月那次救命的服务器迁移。从来不会忘,从来不会丢。比任何笔记软件都可靠,因为你每天都在"写"。
ncdu:当磁盘满了而你一脸茫然
某天网站突然打不开了。查了半天发现磁盘 100%。用 du 一层一层地查,查到第三层我就放弃了——太慢了,而且输出的内容让人眼花。
然后我遇到了 ncdu:
sudo apt install ncdu
ncdu /
它会扫描目录大小,然后给一个交互式的界面,你可以用方向键在文件夹之间穿梭,按 d 直接删除,按 q 退出。哪个文件夹最大、哪里的日志忘了清理、哪个 Docker 镜像占了几十 G——一目了然。
那次发现是 Docker 的 overlay2 目录吞了 45G。删掉几个没用的镜像,网站恢复了。全程不到五分钟。而我之前手动 du 已经花了一个小时。

写在最后
回头想想,这些命令其实都很简单。它们的共同点不是"高级",而是在你最需要的时候刚好能用上。
rsync 在你搬家的时候,tmux 在你断网的时候,history 在你健忘的时候,ncdu 在你磁盘爆炸的时候——它们不声不响地等在那里,像一个沉默的老朋友,等你有天终于注意到它。
也许这就是命令行世界的温柔吧。没人给你发通知,没人弹窗提醒你"试试这个功能",它只是安静地躺在那里。你找到了,就是你的。
如果你刚开始用 Linux,希望这四条命令能在某个深夜帮到你。不用现在记住,收藏就好。等你需要的那天,它们还在。