Linux 常用命令技巧

2026-06-22 · 6 阅读 · 504字
Linux

Linux 常用命令技巧

文件操作

查找与搜索

# 按名称查找文件
find /var/log -name "*.log" -mtime -7

# 按大小查找(大于 100MB)
find / -type f -size +100M -exec ls -lh {} \;

# 按权限查找
find /usr -type f -perm 4755

# 快速定位文件(基于数据库,比 find 快)
locate nginx.conf
sudo updatedb   # 更新 locate 数据库

文件内容操作

# 查看文件头部和尾部
head -n 20 app.log
tail -f -n 100 app.log            # 实时跟踪日志

# 强大的查看器 less
less -N bigfile.log               # 显示行号
# 在 less 中:/pattern 搜索, n/N 上下跳转, G 跳到底部

# 文件分割与合并
split -b 100M largefile.tar.gz part_
cat part_* > restored.tar.gz

快速操作组合

# 查看最占用磁盘空间的目录
du -sh /* 2>/dev/null | sort -rh | head -10

# 批量重命名(将所有 .htm 改为 .html)
rename 's/\.htm$/.html/' *.htm

# 统计代码行数
find src -name "*.ts" | xargs wc -l | tail -1

进程管理

查看进程

# 动态进程查看
top -o %MEM                  # 按内存排序
htop                          # 增强版 top

# 进程快照
ps aux --sort=-%mem | head -10    # 内存 top 10
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

# 查找进程
pgrep -f "node server"       # 通过命令名查找 PID
pidof nginx                   # 查找 nginx 的 PID

信号与控制

# 发送信号
kill -15 1234                # 优雅终止 (SIGTERM)
kill -9 1234                 # 强制终止 (SIGKILL)
kill -HUP 1234               # 重新加载配置 (SIGHUP)

# 批量操作
pkill -f "node server"       # 匹配命令名终止
killall chrome                # 终止所有 chrome 进程

网络诊断

连接检查

# 端口监听状态
ss -tlnp                      # 查看所有 TCP 监听端口
ss -tunap                     # 查看所有 TCP/UDP 连接

# 旧版但常用
netstat -tlnp

# 连接追踪
lsof -i :8080                 # 查看谁在使用端口 8080

连通性测试

# HTTP 请求
curl -I https://example.com           # 仅查看响应头
curl -w "%{http_code}" -o /dev/null   # 查看状态码

# 网络路径追踪
traceroute -n example.com
mtr example.com                        # 持续追踪(更强)

# DNS 查询
dig example.com A
nslookup example.com
host example.com

带宽监控

# 实时流量
iftop -i eth0
nethogs eth0                           # 按进程查看流量

# 抓包
tcpdump -i eth0 port 80 -w capture.pcap
tshark -r capture.pcap -T fields -e http.host | sort | uniq -c | sort -rn

磁盘与文件系统

# 磁盘空间
df -h                                  # 人类可读格式
df -i                                  # inode 使用情况

# 磁盘 I/O 监控
iostat -x 2                            # 每 2 秒输出

# 查找大目录
ncdu                                   # 交互式磁盘分析

系统信息

# 系统版本
uname -a                               # 内核版本
cat /etc/os-release                    # 发行版信息

# 硬件信息
lscpu                                  # CPU 信息
free -h                                # 内存使用
lsblk                                  # 块设备信息
lspci | grep -i nvidia                 # 显卡信息

# 运行时间与负载
uptime                                 # 运行时间和负载
w                                      # 谁登录了,在做什么

文本处理三板斧

grep

# 递归搜索并显示上下文
grep -rn "ERROR" --include="*.log" -C 3 /var/log

# 仅列出匹配的文件
grep -rl "TODO" src/

# 正则搜索 IP 地址
grep -E "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log

sed

# 替换文本
sed -i 's/old-host/new-host/g' config/*.yml

# 删除匹配行
sed -i '/^#/d' config.conf           # 删除注释行

# 提取特定行范围
sed -n '100,200p' largefile.log

awk

# 按列处理
awk '{print $1, $NF}' access.log     # 打印第 1 列和最后一列

# 过滤行
awk '$9 >= 500 {print $1, $7, $9}' access.log   # 5xx 错误

# 分组统计
awk '{ips[$1]++} END {for (ip in ips) print ip, ips[ip]}' access.log

总结

掌握这些 Linux 命令技巧可以极大提升日常运维效率。关键在于理解每个命令的设计哲学,并将它们组合起来解决实际问题。建议将这些命令整理成常用的 shell 别名或函数,减少重复输入。