10 个强大且值得掌握的 Linux 命令
引言:当终端开始"解决问题"
很多人第一次真正感受到 Linux 的能力,是在终端里执行了一条自己并不完全理解的命令:按下回车后,问题被快速定位或直接消失。没有图形界面,没有向导,也没有额外解释,只有结果。
Linux 早已不再被视为"难用的系统",但它仍然提供了不少底层工具:它们能把系统状态和执行细节直接摊开,让排障从"猜测"变成"证据"。
下面整理 10 个非常实用的 Linux 命令。它们并不是什么"危险技巧",但很多人在第一次用对之后,都会意识到:
"原来问题还可以这样查。"
strace:跟踪系统调用
strace 用于实时跟踪进程的系统调用(system call)及其返回值。
bash
strace -p 1234
当程序"莫名其妙"失败时,strace 往往能让你直接看到它卡在了哪一步:文件访问、网络调用、权限检查,以及具体的错误码。
为什么它很有用:
- 能定位失败发生在哪个系统调用
- 能快速发现权限不足、路径不存在、依赖缺失等问题
- 让"它不工作"变成可复盘的具体原因
lsof:查看文件/端口占用
当你删除文件、释放端口或卸载目录时遇到占用问题,lsof 可以列出正在使用目标资源的进程。
bash
lsof /path/to/file
为什么它很有用:
- 能快速定位"到底是谁在占用"
- 排查端口占用、文件句柄泄漏时非常直接
- 适合用于线上排障与运维定位
dd:底层数据复制/写入工具
dd 是一个非常底层的工具,用于按块读取/写入数据。它常用于制作镜像、数据迁移、备份与恢复。
bash
dd if=/dev/zero of=/dev/sda
上面这条命令会把设备写入全 0 数据。在生产环境中误用,可能导致数据不可恢复,因此务必确认 of= 指向的目标设备。
为什么它很有用:
- 可以直接对块设备进行读写
- 适合做镜像制作、备份与恢复
- 使用门槛不高,但风险很高,需要严格确认参数
nc(netcat):网络调试与临时通信
nc(Netcat)是一个轻量但非常强大的网络工具,可用于监听端口、测试连通性、传输数据等。
bash
nc -l 4444
一行命令,你就开了一个监听端口。再多敲几下,你能传文件、测端口、临时搭服务、排查网络问题。
为什么它很有用:
- 一条命令即可快速启动监听或建立连接
- 适合用于端口调试、服务联调与简单数据传输
- 工具轻量,适用范围很广
watch:周期性执行命令
有些问题需要观察变化过程,而不是只看某一刻的结果。
bash
watch -n 1 df -h
每秒刷新一次,你能看到磁盘占用实时变化;也能用来盯 CPU、内存、文件变化......不用写脚本、不用装 agent。
为什么它很有用:
- 可以把任何命令输出快速变成"实时刷新"的视图
- 不依赖额外监控系统,排查现场问题很方便
- 适合观察磁盘、内存、进程等随时间变化的指标
xargs:把输出转换为参数
xargs 会把上一条命令的输出转换为另一个命令的参数,是常见的批处理工具。
bash
find . -name "*.log" | xargs rm
为什么它很有用:
- 很多批量操作可以用一行管道完成
- 适合清理、检索、批处理文件等场景
- 让命令行工具的组合能力发挥出来
nohup:让进程在会话结束后继续运行
当你希望某个任务在断开 SSH、退出终端后继续运行时,可以使用 nohup。
bash
nohup long_task &
你断开连接,它照样跑完。没人需要守着它。
为什么它很有用:
- 适合跑长任务或后台任务
- 不需要保持终端会话
- 常用于脚本化与自动化执行
/proc:通过虚拟文件系统查看系统信息
Linux 会通过 /proc 这个虚拟文件系统暴露大量内核与进程信息。
bash
cat /proc/cpuinfo
为什么它很有用:
- 系统状态和硬件信息可以直接读取
- 排查性能与资源问题时很常用
- 让很多"系统内部信息"变得可见
rsync:增量同步工具
rsync 不只是复制文件,它会根据差异进行增量传输,并能保留权限等元数据。
bash
rsync -av --delete source/ dest/
它只传差异文件、保留权限,还能把目录镜像得很干净。
为什么它很有用:
- 适合用于备份、部署、目录镜像等场景
- 传输效率高,尤其适合大目录同步
- 在工程实践中非常常见
history | grep:检索历史命令
当你忘记自己以前用过哪条命令时,可以直接在 shell 的历史记录里搜索。
bash
history | grep ssh
为什么它很有用:
- 能快速复用过去的命令
- 排查与运维时能节省大量时间
- 随着使用时间增长,命令历史会变成一份可检索的经验库
Linux 的特点:直接、透明
这些命令之所以让人印象深刻,主要是因为它们减少了中间层:你能更直接地看到系统发生了什么、哪个环节出了问题、当前资源到底被谁占用。
Linux 不会替你隐藏复杂度,但它会把关键细节以可验证的方式提供出来。掌握这些工具之后,很多问题不再需要猜。
结语
你不需要背下所有命令,但需要知道"有哪些手段可以用"。当你逐渐熟悉这些工具,Linux 对你来说就不只是一个系统,而是一套高效、可控的工作方式.