Linux 常用命令速查与指南
Linux 常用命令分类整理,涵盖文件管理、文本处理、进程控制、网络诊断和系统信息查询。
背景
#Linux 命令行是开发者的日常工具。无论本地开发、远程服务器维护还是 CI/CD 流水线操作,掌握一批稳定、高效的命令能显著减少对搜索引擎的依赖。
本文面向有基础语法概念但希望系统化整理常用命令的开发者。按使用场景分类,每类给出最常用的命令和典型组合,最后补充容易忽略的注意事项。
文件与目录操作
#基础命令
# 列出当前目录内容(隐藏文件、详细信息、按时间排序)
ls -laht
# 递归创建目录
mkdir -p project/{src,docs,test}
# 复制与移动
cp -r source/ dest/ # 递归复制
rsync -avz --progress # 增量同步,更适合大文件
mv oldname newname # 移动或重命名
# 安全删除
rm -rf dir/ # 慎用,-rf 不确认直接删
查找文件
# find:按名称、类型、大小、时间过滤
find . -name "*.log" -mtime +7 -delete # 删除 7 天前的 .log
find . -type f -size +100M # 找超过 100MB 的文件
# fd:更快的现代替代(需要安装)
fd "\.py$" -x wc -l # 找 .py 文件并统计行数
# locate:依赖数据库,查找极快(需要 updatedb 更新索引)
locate nginx.conf
文本处理
#文本处理是命令行最强大的能力之一,适合在管道中组合使用。
查看文件
cat file.txt # 全文输出,适合小文件
less file.txt # 翻页查看,/搜索,q 退出
head -n 20 file.txt # 前 20 行
tail -n 50 file.txt # 后 50 行
tail -f app.log # 实时跟踪日志追加
grep:文本搜索
grep -rn "error" --include="*.log" ./
grep -i "warning" app.log # 忽略大小写
grep -c "timeout" access.log # 只计数
grep -v "healthy" check.log # 排除匹配行
# 上下文查看
grep -B 3 -A 5 "Exception" crash.log # 前 3 行 + 后 5 行
sed:流编辑
sed -i 's/old/new/g' file.txt # 原地替换全部匹配
sed -n '10,20p' file.txt # 打印第 10 到 20 行
sed '/^#/d' config.conf # 删除注释行
awk:结构化文本处理
# 列提取与条件过滤
awk '{print $1, $3}' access.log # 打印第 1、3 列
awk '$4 > 500 {print $1, $4}' stats.txt # 输出第 4 列 > 500 的行
# 内置变量
awk 'NR%2==0' file.txt # 只打印偶数行
awk '{sum+=$1} END{print sum}' nums.txt # 累加第一列
排序与去重
sort -k2 -t, data.csv # 按第二列排序
sort -u file.txt # 排序 + 去重
uniq -c sorted.txt # 统计连续重复次数
进程与系统管理
#进程查看与控制
ps aux # 所有进程快照
ps aux --sort=-%mem | head -5 # 内存 TOP 5
top -o %MEM # 交互式进程监视
# 按名称查找 PID
pgrep -f "node app.js"
pidof nginx
# 终止进程
kill -15 <PID> # 优雅退出(SIGTERM)
kill -9 <PID> # 强制杀死(SIGKILL)
pkill -f "node app.js" # 按名称匹配杀死
后台运行
nohup python server.py > output.log 2>&1 &
# 或者使用 systemd 管理长期服务
# 或者用 tmux/screen 保持终端会话
# 查看后台进程
jobs -l
bg/fg # 前后台切换
系统资源
df -h # 磁盘分区使用率
du -sh * | sort -rh | head -10 # 当前目录 TOP 10 大占用
free -h # 内存占用
uptime # 运行时长 + 负载均值
lscpu # CPU 架构信息
网络诊断
## HTTP 请求
curl -v https://api.example.com # 带请求/响应头详情
curl -o file.zip -L https://example.com/file.zip # 下载并跟随重定向
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value"}' https://api.example.com/endpoint
# 连接诊断
ping -c 4 google.com # 连通性 + 延迟
ss -tlnp # 查看监听端口(现代版 netstat)
netstat -tulpn # 传统版(需要安装)
telnet host 80 # 手动测试 TCP 端口
nc -zv host 22 80 443 # 批量端口探测
# DNS 查询
nslookup example.com
dig example.com +short
权限管理
#chmod 755 script.sh # rwxr-xr-x(所属者可写,其他只读执行)
chmod +x script.sh # 添加可执行权限
chown user:group file.txt # 修改所属用户和组
chattr +i config.yaml # 锁定文件禁止修改(root 才能解除)
# 查看权限
ls -l # 第一列即权限位
stat file.txt # 更详细的元信息
压缩与归档
## tar(最通用)
tar -czf archive.tar.gz dir/ # 创建 .tar.gz
tar -xzf archive.tar.gz # 解压
tar -tf archive.tar.gz # 查看内容
# zip(跨平台交换)
zip -r archive.zip dir/
unzip -l archive.zip # 查看内容而不解压
unzip archive.zip -d dest/
# 快速压缩单个文件
gzip -k file.txt # 保留原文件
gzip -d file.txt.gz # 解压
组合实战:日志排查场景
## 场景:500 错误已经出现,需要找出所有 5xx 响应并分析
zgrep -h "HTTP/1.1\" 5[0-9][0-9]" access.log.2.gz access.log.1.gz access.log \
| awk '{print $1}' \
| sort \
| uniq -c \
| sort -rn \
| head -20
这个管道组合做了:
zgrep并行搜索多个.gz和当前日志,匹配 HTTP 5xx 状态码awk提取第一列(通常是客户端 IP)sort | uniq -c统计每个 IP 的请求次数- 再
sort -rn按次数降序排列 head -20取 TOP 20
常见陷阱
#容易被误解的命令
# 1. chmod 644 与 755 的含义不要搞混
# 644 = rw-r--r--(文件默认安全权限)
# 755 = rwxr-xr-x(目录和可执行脚本)
# 2. cp 与 mv 的区别
# cp 复制,源文件保留
# mv 移动或重命名,源文件消失
# 3. rm -rf 的谨慎使用
# 习惯用 rm -ri 或先 ls 确认再删
# 设置别名:alias rm='rm -i'
# 4. tar -czf 与 -xzf 的参数顺序
# -f 必须在紧跟的归档文件名之前
# 正确:tar -czf archive.tar.gz dir/
# 错误:tar -cfz archive.tar.gz dir/
管道中变量失效
# 错误的写法
cat file.txt | while read line; do
count=$((count + 1))
done
echo $count # 输出 0!子 shell 变量不传回
# 正确的写法
count=0
while read line; do
count=$((count + 1))
done < file.txt
echo $count # 正确
总结
#Linux 命令行的核心能力不是记忆每个参数,而是理解三类思维方式:
- 组合思维 — 管道
|连接小命令完成复杂任务 - 文本思维 — 一切皆文本流,用 grep/sed/awk 处理结构化输出
- 可逆思维 — 写脚本前先用
echo或--dry-run验证意图
建议在新服务器上先做三件事:
# 1. 设置安全别名
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'
# 2. 启用历史时间戳
export HISTTIMEFORMAT="%F %T "
# 3. 安装 tldr(简化版 man,适合快速回忆)
npm install -g tldr
# 或 pip install tldr
# 用法:tldr tar / tldr find
后续可以继续深入的方向:Shell 脚本最佳实践、Vim 高效编辑、tmux 终端复用、以及 systemd 服务管理。