开头我先说个现象:很多刚接触 Linux 的人,第一反应是去背“linux常用命令大全”,背了几天发现自己还是不会用。原因很简单,命令这东西不是靠背的,是靠场景练出来的。你在什么场景下需要删文件、查日志、看端口、传文件,命令自然就记住了。这篇内容我就照着实际运维和日常使用的角度,把 Linux 命令里最常用、最容易踩坑、面试和工作里真正会碰到的部分过一遍,顺便把一些命令背后的原理讲清楚。无论你是刚入行的运维、做嵌入式开发的同学,还是偶尔要在服务器上操作的测试和研发,这篇内容应该都能帮你省下不少搜索时间。
这篇内容不会按“命令大全”那种流水账式写法来,而是按我实际工作里的套路来组织:目录文件操作、用户权限、进程网络、文本处理、容器部署、疑难排查。每个部分都会给命令、给场景、给坑,最后再说说我自己整理的一套“命令错题本”,希望你看完能少走点弯路。
1. 为什么说 Linux 命令是绕不开的基本功
1.1 命令不是背出来的,是“用”出来的
很多人一开始会问:现在图形界面这么成熟了,为什么还要用命令行?这个问题我早期的想法也是“图形界面方便”,直到我开始批量操作几十台服务器才发现,图形界面根本没法批量处理。你需要在一台机器上执行同样的操作,用 shell 脚本几十台机器一起跑,几分钟就完事。图形界面下你得一台台点,还得担心误操作。
另一个原因是,Linux 服务器的很多问题,图形界面根本看不到。比如系统负载突然高了、内存不够了、磁盘 IO 卡住了、某个端口被占了,这些都是命令行下用 top、free、iostat、ss 这些命令一眼就能定位的。图形界面反而把这些细节藏起来了。
我给你的建议是:不要按字母顺序去记命令,而是按“问题”去记命令。比如“我想知道谁占用了 8080 端口”这个问题,对应的是 ss -lntp | grep 8080;“我想看昨天的日志有没有报错”,对应的是 grep -E "ERROR|Exception" app.log。用问题驱动记忆,命令会自己长在脑子里。
1.2 我日常最高频的命令清单(附场景)
我整理了一份自己在真实工作中几乎每天都会用到的命令清单,不是那种几百条的大全,而是真正高频、随手就要敲的:
| 场景 | 命令片段 | 说明 |
|---|---|---|
| 查看当前目录 | pwd |
处理脚本路径时特别有用 |
| 切换目录 | cd /var/log |
配合 cd - 可以在两个目录间跳转 |
| 列出文件 | ls -lah |
-h 显示人类可读大小,-t 按时间排序 |
| 看实时日志 | tail -f app.log |
排查问题时开着它最安心 |
| 找文件 | find / -name "*.conf" |
别一上来全盘搜,先限定目录 |
| 查进程 | ps -ef |
配合 grep 过滤关键词 |
| 查端口 | ss -lntp |
比 netstat 更推荐,系统自带 |
| 看内存 | free -h |
重点看 available 而不是 free |
| 看磁盘 | df -h |
确认是不是磁盘满了导致服务异常 |
| 编辑文件 | vim config.yaml |
服务器上离不开的编辑器 |
| 压缩解压 | tar -czf、tar -xzf |
注意参数顺序,很容易记反 |
| 远程连接 | ssh user@host |
配合密钥登录更好用 |
| 文件传输 | scp file user@host:/path |
小文件传输够用了 |
| 查看系统版本 | cat /etc/os-release |
判断发行版和版本号 |
这些命令看着简单,但每一条都有值得展开的细节。下面我会挑几个重点展开讲,尤其是那些看起来“会”但实际很容易出问题的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 目录与文件操作:从入门到闭着眼都能敲
2.1 新建、删除、移动、查找,别再用 Windows 的思维去理解
Linux 的目录结构和 Windows 完全不同。Windows 有 C 盘、D 盘这样的盘符概念,Linux 只有一个根目录 /,所有设备、分区都挂载在某个目录下。这个思维的转变很重要,否则你在 ls / 的时候会看不懂那一堆目录是干什么的。
先说说常用的目录操作:
mkdir -p /data/logs:-p参数表示“如果父目录不存在就自动创建”,这个参数在写脚本时几乎必须加,不然目录层级一多就会报错。rm -rf dir:这是删除文件夹最常用的命令,也是风险最高的命令。-r是递归删除,-f是强制删除。千万不要在关键目录下乱敲rm -rf,尤其是rm -rf /这种,绝对不要尝试。我见过有人在生产环境手滑把项目目录删了的,最后只能从备份恢复,折腾到凌晨。mv old new:移动文件,同一个目录内移动就是重命名。注意mv命令如果目标位置已经存在同名文件,会直接覆盖,不会提示。所以我在执行覆盖操作前会用ls先确认一下目标目录情况。cp -a source dest:复制文件并保留属性,-a是归档模式,适合复制目录和保留权限、时间戳。
查找文件是另一个高频需求。最基本的 find 用法是这样:
bash复制find /etc -name "*.conf" -type f
意思是在 /etc 目录下找所有以 .conf 结尾的普通文件。-type f 是限定类型为文件,避免目录混进来。如果你想找最近 7 天内修改过的文件:
bash复制find /var/log -mtime -7 -type f
-mtime -7 表示修改时间在 7 天以内。+7 则是 7 天以前。这个参数在排查“哪个日志文件最近更新过”时特别好用。
2.2 查找文件到底用 find 还是 locate
很多人会纠结 find 和 locate 的区别。find 是实时搜索磁盘,准确但慢;locate 是查数据库,快但不一定最新。locate 依赖系统定期更新的数据库,新创建的文件可能查不到,需要先执行 updatedb 更新数据库。
实际工作中我更推荐 find,虽然慢一点,但不会因为数据库过期给出错误结果。不过有个技巧:find 全盘搜索很费时间,尽量限定路径范围。比如你知道配置文件可能在 /etc 下,就用 find /etc -name "*.conf",不要一上来就 find / -name "*.conf"。如果确实需要全盘找,可以加 -xdev 参数避免搜索挂载的其他分区,速度会快很多。
另外,`whi
