Linux 命令很多,但开发和日常排障里反复出现的其实就几类:找文件、看内容、看进程、查网络、改环境变量。与其背一大张命令表,不如先建立“遇到什么问题,用哪一类命令”的判断。
目录
文件和目录
ls
查看目录内容:
ls
ls -la
-l看详细信息-a包括隐藏文件
排查项目目录、权限、软链接时,ls -la 基本是第一步。
cd
切换目录:
cd /var/www
cd ..
cd -
cd - 很实用,可以在上一个目录和当前目录之间来回跳。
mkdir
创建目录:
mkdir logs
mkdir -p apps/freemac/current
-p 会顺带创建不存在的父目录。
cp 与 mv
复制和移动:
cp .env.example .env
mv old.log archive.log
目录复制通常要加 -r:
cp -r public/images backup/images
rm
删除文件或目录:
rm app.log
rm -r dist
rm -rf 很危险,不要为了省事把它当默认写法。先 ls、pwd 看清路径再删。
find
按名称查找文件:
find . -name "*.md"
find /var/log -name "nginx*"
在项目仓库里,如果只是搜文本或列文件,通常优先用 rg 会更快;find 更适合文件系统级查找。
查看文件内容
cat
快速输出整个文件:
cat package.json
适合小文件,不适合超长日志。
less
分页查看长文件:
less /var/log/nginx/error.log
这是看日志、配置文件时更稳的默认选择。
tail
查看文件末尾,尤其适合追日志:
tail -n 50 /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
-f 会持续跟踪新增内容。
进程与资源
ps
查看进程:
ps aux
ps aux | grep nginx
当你想确认某个服务是否启动、由谁启动、PID 是多少,通常先看它。
top
动态查看 CPU、内存和进程占用:
top
如果服务器突然变慢,top 能帮你先确认是不是某个进程把资源打满了。
kill
结束进程:
kill 12345
kill -9 12345
先尝试普通 kill,只有进程不响应时再用 -9。强杀会跳过程序自己的清理逻辑。
网络与远程连接
curl
发 HTTP 请求、看响应头、排 API:
curl https://example.com
curl -I https://example.com
curl -v http://127.0.0.1:3000/
本地服务排障时,curl -v 很有价值。像反向代理、容器转发问题,应该先验证上游能否直接访问,相关思路可见 反向代理与 Nginx 排障指南。
ip
查看网卡和 IP:
ip addr
ip route
现代发行版里,ip 通常比旧的 ifconfig 更通用。
ssh
远程登录服务器:
ssh user@example.com
ssh -p 2222 user@example.com
长期开发和部署优先配 SSH key,而不是每次输密码。
wget
下载文件:
wget https://example.com/archive.tar.gz
如果你更习惯一个命令完成下载和调试,curl 也能覆盖很多场景。
环境变量
env 与 printenv
查看环境变量:
env
printenv PATH
当程序“本地能跑、服务器不能跑”时,环境变量通常是第一批排查对象。
export
当前 shell 临时设置变量:
export NODE_ENV=production
export PORT=3000
只对当前会话生效。想持久化要写入 shell 配置文件或服务配置。
source
让当前 shell 重新加载脚本:
source ~/.zshrc
改了环境变量文件却没有生效,通常就是因为还没重新加载。
一个开发者常见排障流程
假设你部署的 Node 服务打不开:
pwd
ls -la
ps aux | grep node
curl -v http://127.0.0.1:3000/
tail -f /var/log/nginx/error.log
这套顺序比一上来就改配置更有效,因为它先确认:
- 服务进程是否存在
- 监听服务本身是否通
- Nginx 是否报错
如果问题发生在 Docker 里,还要额外确认绑定地址和端口映射,见 Docker 中 localhost 与 0.0.0.0 的区别。
结论
- 文件目录:
ls、cd、cp、mv、rm、find - 内容查看:
cat、less、tail - 进程资源:
ps、top、kill - 网络连接:
curl、ip、ssh - 环境变量:
env、printenv、export、source
先学会按问题分类,再扩命令细节,效率会比死记命令大全高得多。
参考资料
继续阅读
Docker 常用命令:容器、镜像、日志与清理
按实际排障流程整理 Docker 容器、镜像、日志、网络、数据卷和磁盘清理命令,解释 run、exec、logs、inspect 与 prune 的使用边界。
10 分钟反向代理是什么:Nginx 配置与排障指南
解释正向代理与反向代理的区别,并通过 Nginx proxy_pass、请求头、WebSocket、超时和日志配置展示应用上线时的常见做法。
11 分钟Dockerfile 与 .dockerignore:Node.js 镜像构建指南
从构建上下文、Dockerfile 分层和多阶段构建讲起,给出 Node.js 项目的 Dockerfile 与 .dockerignore 示例,并解释缓存、镜像体积和敏感文件边界。
订阅 FreeMac
每周精选:免费 Mac 软件评测、可信来源更新、替代方案和少折腾指南。