当前位置:首页>Linux>Linux 新手必会 20 个命令

Linux 新手必会 20 个命令

  • 2026-10-11 06:14:45
Linux 新手必会 20 个命令

凌晨 3 点,服务器报警响了:20 个救命命令

运维打怪日记 · 第 001 期

这是每个运维都经历过的场景:凌晨 3 点,手机突然响起,监控群@所有人:CPU 100%。你抓起电脑,手还在抖,发现只会 3 个命令...


一、那个让我终生难忘的夜晚

时间: 2023 年冬天,凌晨 3:17 地点: 出租屋,被窝里 事件: 入职新公司第 3 天,第一次 on-call

电话响的时候,我脑子一片空白。

"喂?"

"服务器崩了,你赶紧看一下!"

(电话挂断)

我手忙脚乱打开电脑,登录服务器,输入:

top

然后...就没有然后了。

我只知道 CPU 红了,但不知道哪个进程在作妖。想查日志,不知道在哪。想重启,怕背锅。

那一夜,我在机房打了地铺。


二、血泪换来的 20 个命令

那次之后,我逼自己把这 20 个命令刻进 DNA。

现在,我把它们整理给你。希望你永远用不到,但用到的时候能救命。


三、文件操作类(5 个)

1️⃣ ls - 列出文件

真实场景: 领导问"昨天谁改了配置文件?"

ls -lt                    # 按时间排序,最新的在前
ls -lt | head -5          # 看最近改的 5 个文件
ls -l *.conf              # 只看配置文件

💡 老运维的血泪: 有一次,生产环境配置被改错,领导问谁干的。我用 ls -lt 找到最近修改的文件,又用 stat 查到修改时间,最后发现是测试同事手滑...


2️⃣ cd - 切换目录

真实场景: 日志报错了,但不知道日志在哪

cd /var/log               # 日志默认在这
cd -                      # 回到上一个目录(这个超实用!)
pwd                       # 我在哪?(别笑,紧张时真会忘)

⚠️ 老运维的血泪: 有次排查故障,紧张到忘了自己在哪目录,直接 rm -rf *... 还好及时发现,但手心全是汗。

记住: 执行删除前,先 pwd 确认位置!


3️⃣ cp - 复制文件

真实场景: 要改配置文件,但不敢直接改

cp nginx.conf nginx.conf.bak.20250314    # 备份!备份!备份!
cp -a old.conf new.conf                  # 保留权限复制

⚠️ 血泪教训: 有次同事直接改配置文件,改完服务起不来了... 原文件还没备份。

记住: 改任何配置前,先 cp 备份!这是保命习惯!


4️⃣ mv - 移动/重命名文件

真实场景: 日志文件太大,要挪走

mv access.log access.log.bak             # 重命名备份
mv bigfile.tar /data/archive/            # 移走大文件

💡 老运维的血泪: 有次磁盘满了,我用 mv 把大文件移到备份盘,结果... 两个盘是同一个挂载点。文件没动,时间浪费了。

记住: mv 前先 df -h 确认挂载点!


5️⃣ rm - 删除文件

真实场景: 磁盘满了,要清理日志

rm -f *.log.2024*         # 删除旧日志
find /var/log -name "*.log" -mtime +30 -delete  # 删除 30 天前的日志

⚠️ 血泪教训(这个真的要命): 我见过 3 个同事误操作过这个命令:

- rm -rf / 删库跑路

- rm -rf * 先 pwd 看看你在哪!

保命建议:

  • - 删除前先 ls -la 确认
  • - 用 trash 代替 rm(可恢复)
  • - 生产环境删除操作,必须两人确认

四、文件查看类(4 个)

6️⃣ tail - 实时看日志

真实场景: 服务报错了,要看实时日志

tail -f /var/log/messages              # 实时查看
tail -f access.log | grep "500"        # 只看 500 错误
tail -100 error.log                    # 看最后 100 行

💡 老运维的血泪: 有次服务报错,我用 cat 看日志,结果日志 2 个 G,终端直接卡死...

记住: 大日志用 tail 或 less,别用 cat!


7️⃣ grep - 搜索关键字

真实场景: 日志太多,要找错误信息

grep "error" /var/log/messages         # 找错误
grep -i "error" file                   # 忽略大小写
grep -v "info" file                    # 排除 info
tail -f log | grep "error"             # 实时监控错误(黄金组合!)

💡 老运维的血泪: 有次排查故障,我用 grep 搜"error",没找到。后来发现日志里写的是"ERROR"...

记住: 加 -i 忽略大小写,别跟自己过不去!


8️⃣ less - 分页查看

真实场景: 日志太大,要慢慢看

less bigfile.log

交互命令:

  • - 空格 - 下一页
  • - b - 上一页
  • - /keyword - 搜索
  • - G - 跳到末尾
  • - q - 退出

💡 老运维的血泪: 有次用 vim 打开 5G 日志,编辑器卡死,服务器也卡了... 被领导骂了一下午。

记住: 大文件用 less,别用 vim 或 cat!


9️⃣ head - 查看文件开头

真实场景: 要看日志格式,确认字段

head -20 access.log           # 看前 20 行
head -n 1 config.yaml         # 只看第一行(看配置格式)

五、文件查找类(2 个)

🔟 find - 查找文件

真实场景: 磁盘满了,找大文件

# 找大于 500M 的文件
find / -type f -size +500M -exec ls -lh {} \;

# 找 7 天前的日志
find /var/log -name "*.log" -mtime +7

# 找 7 天前的日志并删除
find /var/log -name "*.log" -mtime +30 -delete

💡 老运维的血泪: 有次磁盘满了,我用 du -sh * 一层层找,找了 2 小时... 后来才知道 find 可以直接找大文件。

记住: 磁盘满了,先用这个命令:

cd /
du -sh * | sort -rh | head -10

1️⃣1️⃣ grep - 文本搜索(再次出现,因为太重要)

真实场景: 要查某个订单的日志

grep "order_id_12345" *.log              # 找订单日志
grep -r "keyword" /var/log/              # 递归搜索
grep -C 5 "error" log                    # 显示错误前后 5 行

六、系统信息类(4 个)

1️⃣2️⃣ ps - 查看进程

真实场景: 服务卡了,看进程还在不在

ps aux | grep nginx           # 找 nginx 进程
ps aux --sort=-%cpu | head    # 看 CPU 最高的进程
ps aux --sort=-%mem | head    # 看内存最高的进程

💡 老运维的血泪: 有次服务挂了,我 ps aux | grep java,发现进程还在,但实际已经死了(僵尸进程)。后来学会用 jps 看 Java 进程更准。


1️⃣3️⃣ top - 实时监控系统

真实场景: 服务器卡了,看什么在占用资源

top

交互命令:

  • - P - 按 CPU 排序
  • - M - 按内存排序
  • - 1 - 显示所有 CPU 核心
  • - q - 退出

💡 老运维的血泪: 有次 CPU 100%,我用 top 看到是一个 Java 进程。后来用 top -H -p 看线程,才发现是某个线程死循环。

记住: top 是排查故障的第一步!


1️⃣4️⃣ df - 查看磁盘空间

真实场景: 服务报错"no space left on device"

df -h                 # 人类可读格式(最常用)
df -i                 # 看 inode(空间够但无法写入时用)

⚠️ 血泪教训: 有次磁盘空间够,但服务就是写不进去。查了半天,发现是 inode 满了(大量小文件)。

记住: 磁盘报错,先 df -h,再 df -i!


1️⃣5️⃣ du - 查看目录大小

真实场景: 磁盘满了,找哪个目录占空间

du -sh * | sort -rh | head -10    # 找最大的 10 个目录

💡 老运维的血泪: 有次磁盘满了,我用 ls -lh 看文件大小,结果... 隐藏文件没显示。真正占空间的是 .m2 目录。

记住: du -sh * 比 ls -lh 更准!


七、网络类(3 个)

1️⃣6️⃣ ss / netstat - 查看网络连接

真实场景: 服务访问不了,看端口有没有监听

ss -tunlp | grep 80              # 看 80 端口
ss -tunlp | grep java            # 看 Java 进程端口
netstat -tunlp                   # 老命令,逐渐被 ss 替代

💡 老运维的血泪: 有次服务起不来,报"address already in use"。我用 ss -tunlp | grep 8080 发现端口被占用了... 是昨天测试的进程没关。


1️⃣7️⃣ curl - 测试接口

真实场景: 服务起来了,但不知道能不能用

curl http://localhost:8080/health          # 健康检查
curl -I http://localhost:8080              # 只看响应头
curl -X POST -d "json" http://api/test     # 测试 POST

💡 老运维的血泪: 有次部署完,我以为服务好了,结果用户说访问不了。后来学会用 curl 先测试,再告诉领导"可以了"。


1️⃣8️⃣ ping - 测试连通性

真实场景: 服务器连不上了

ping baidu.com              # 测试外网
ping 192.168.1.1            # 测试内网
ping -c 4 baidu.com         # 只 ping 4 次

八、权限类(2 个)

1️⃣9️⃣ chmod - 修改权限

真实场景: 脚本执行不了,报"permission denied"

chmod +x script.sh          # 添加执行权限
chmod 755 directory         # 目录权限
chmod 644 file              # 文件权限

⚠️ 血泪教训: 有次服务启动失败,查了 3 小时,最后是配置文件权限不对(600,服务读取不了)。

记住: 服务启动失败,先查权限!


2️⃣0️⃣ chown - 修改所有者

真实场景: 服务说"permission denied",但权限是对的

chown nginx:nginx /var/log/nginx    # 修改所有者
chown -R www:www /var/www           # 递归修改

💡 老运维的血泪: 有次 Nginx 报错,我查了半天,发现日志目录的所有者是 root,Nginx 用户写不进去...

记住: 权限对了但还报错,查所有者!


九、组合拳实战(这才是真功夫)

🎯 场景 1: 凌晨 3 点,服务器报警

# 1. 先看什么占用资源
top

# 2. 发现 CPU 高,看哪个进程
ps aux --sort=-%cpu | head

# 3. 看进程日志
tail -f /var/log/app.log | grep "error"

# 4. 磁盘也满了?找大文件
du -sh * | sort -rh | head -10

# 5. 清理日志
find /var/log -name "*.log" -mtime +30 -delete

🎯 场景 2: 服务访问不了

# 1. 服务进程在不在
ps aux | grep nginx

# 2. 端口有没有监听
ss -tunlp | grep 80

# 3. 防火墙有没有开放
firewall-cmd --list-ports

# 4. 测试本地访问
curl http://localhost:80

# 5. 看日志
tail -f /var/log/nginx/error.log

🎯 场景 3: 磁盘满了,紧急清理

# 1. 看哪个分区满
df -h

# 2. 找大目录
cd /
du -sh * | sort -rh | head -10

# 3. 找大文件
find / -type f -size +500M -exec ls -lh {} \;

# 4. 清理日志
find /var/log -name "*.log" -mtime +30 -delete

# 5. 清理缓存
rm -rf /tmp/*

十、我的学习建议

1. 别死记硬背

我第一次学的时候,把命令抄在小本子上,天天背... 然并卵。

正确方法:

  • - 用的时候查
  • - 查的时候记
  • - 记的时候写笔记
  • - 一个月后,自然记住

2. 建立自己的命令库

我现在有个笔记软件,里面全是命令:

## 磁盘满了
du -sh * | sort -rh | head -10
find / -type f -size +500M

## CPU 高了
top
ps aux --sort=-%cpu | head

## 日志报错
tail -f log | grep error

用的时候直接复制,省时省力。

3. 善用 Tab 键

别硬打命令,用 Tab 自动补全:

  • - 省时间
  • - 不容易错
  • - 还能发现命令提示

4. 学会看帮助

man ls                # 详细手册
ls --help             # 快速帮助
tldr ls               # 简化版(推荐!)

强烈推荐安装 tldr:

# CentOS
yum install tldr

# 使用
tldr tar              # 比 man 简洁太多

十一、写在最后

回到开头那个夜晚。

那一夜之后,我逼自己学了这 20 个命令。

后来,我还是会接到凌晨 3 点的电话。

但现在,我能在 5 分钟内定位问题,30 分钟内解决。

因为我知道,这 20 个命令,能救我的命。


📌 关注公众号【运维打怪日记】

  • - 回复【命令】获取本文 PDF 版(含速查表)
  • - 回复【路线】获取运维学习路线图
  • - 回复【加群】加入运维技术交流群(500+ 运维同行)
下期预告: 《凌晨 4 点,CPU 100%:一次真实的故障排查》

作者:运维老兵 | 10 年运维经验 | 踩过所有坑 本文首发自公众号【运维打怪日记】转载请注明出处

最新文章

随机文章