不管你以后用 Docker、Kubernetes、AWS 还是 Terraform,最终你都是在跟 Linux 服务器打交道。命令行不是你「偶尔用一下」的工具——它是 DevOps 工程师的主要工作界面。
三个原因:
grep ERROR /var/log/*.log | wc -l 比打开 20 个日志文件搜索快 100 倍。Linux 有一个核心哲学:一切皆文件(Everything is a file)。
/dev/ 下)/proc/ 下)这意味着:学会一套文件操作命令,你就能操作 Linux 的一切。
打开你的终端。跟着敲。这 12 个命令是你每天都会用的。
pwd # Print Working Directory — 当前在哪
ls # List — 列出当前目录的文件
ls -la # -l=长格式(权限/大小/时间)-a=包括隐藏文件
cd /tmp # Change Directory — 去 /tmp
cd ~ # 回家目录
cd - # 回上一个目录
cat /etc/hostname # 打印整个文件(短文件用)
less /var/log/syslog # 分页浏览(上下箭头翻,q 退出)
head -5 /etc/passwd # 看前 5 行
tail -f /var/log/syslog # 实时追踪文件末尾(Ctrl+C 退出)
grep root /etc/passwd # 在文件中找「root」
grep -r "error" /var/log/ # 递归搜索整个目录
find /tmp -name "*.log" # 按文件名在 /tmp 下找 .log 文件
find /tmp -mtime -1 # 找 /tmp 下最近 1 天修改过的文件
这是 Linux 命令行的灵魂——把小命令串成流水线。
# | (pipe):把左边命令的输出传给右边命令
ps aux | grep nginx # 在所有进程中找 nginx
cat /var/log/syslog | grep error | wc -l # 数有多少行包含 error
# > (重定向输出):把输出写到文件(覆盖)
echo "hello" > /tmp/test.txt
# >> (追加重定向):把输出追加到文件末尾
echo "world" >> /tmp/test.txt
# < (重定向输入):把文件内容喂给命令
wc -l < /tmp/test.txt # 数文件有多少行
这些是 DevOps 日常排查问题用的。
ps aux # 列出所有进程(BSD 风格)
ps aux | head -5 # 只看前 5 行
top # 实时进程监控(q 退出)
htop # top 的彩色增强版(如果没有:sudo apt install htop)
# 杀掉进程
kill 1234 # 优雅终止 PID 1234
kill -9 1234 # 强制杀死(别上来就用 -9)
df -h # 磁盘使用情况(-h = human-readable)
du -sh /var/log/ # 某个目录占多少空间
free -h # 内存使用情况
curl https://api.github.com # 发 HTTP 请求,打印响应
curl -I https://google.com # 只看响应头
ss -tlnp # 查看哪些端口在监听
ping -c 3 8.8.8.8 # ping 3 次就停
ls -l /etc/passwd # 看权限:-rw-r--r-- 1 root root ...
# ↑ ↑ ↑
# owner group others 各有 r(读) w(写) x(执行) 权限
chmod +x script.sh # 给脚本加执行权限
chmod 755 script.sh # rwxr-xr-x(数字方式)
| 数字 | 权限 | 含义 |
|---|---|---|
| 7 | rwx | 读+写+执行 |
| 6 | rw- | 读+写 |
| 5 | r-x | 读+执行 |
| 4 | r-- | 只读 |
现代 Linux 用 systemd 管理后台服务。你以后配置 Nginx、Docker、你写的后端服务,都会用到:
systemctl status docker # 看 Docker 服务的状态
systemctl start nginx # 启动 Nginx
systemctl stop nginx # 停止 Nginx
systemctl enable nginx # 开机自启
systemctl restart nginx # 重启
journalctl -u nginx -f # 实时看 Nginx 的日志
sudo apt update # 更新包索引
sudo apt install htop # 安装 htop
sudo apt remove htop # 卸载 htop
apt search nginx # 搜索包
目标:在你的终端里完成以下任务,体验完整的排查流程。
df -h 看你的磁盘还剩多少空间free -h 看内存使用情况ps aux | grep -i docker 找 Docker 进程是否在运行ss -tlnp 看哪些端口被占用了du -sh /var/log/ 看日志占了多少空间grep -r "error" /var/log/ 2>/dev/null | head -10 搜最近的 error 日志2>/dev/null 是什么意思?这是把「错误输出」(stderr)扔进 /dev/null(一个黑洞)。不加的话,你没权限读的日志文件会报 Permission denied,干扰结果。
man ls — man(manual)是 Linux 自带的手册,任何命令不懂就 man 命令名下一课我们进入 DevOps 的第一个核心工具:Git 进阶——不只是 commit 和 push,而是 rebase、stash、bisect 这些你面试会被问到的操作。