1. Linux系统常用命令深度解析(四)
作为在Linux系统上摸爬滚打十多年的老运维,我经常被问到"哪些命令真正值得掌握"。这系列文章不讲那些华而不实的冷门命令,只聚焦于实际工作中每天都会用到的核心工具。今天要分享的这些命令,每一个都是我亲自踩过坑、验证过实用性的硬核技能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作进阶
2.1 find命令的实战技巧
find命令的教科书式用法大家都会,但真正高效的使用姿势是这样的:
bash复制# 查找7天内修改过的.log文件(时间单位可以是min/hour/day)
find /var/log -name "*.log" -mtime -7 -exec ls -lh {} \;
特别注意:-exec参数后的分号必须转义,且与{}之间要有空格。我见过太多人因为漏掉这个细节导致命令执行失败。
更高级的用法是结合xargs处理大量文件:
bash复制# 查找超过100M的日志文件并压缩(避免"参数列表过长"错误)
find /opt -type f -size +100M -print0 | xargs -0 gzip
2.2 rsync的黄金参数组合
远程同步文件时,这个组合拳我用了十年:
bash复制rsync -avz --progress --partial --delete -e "ssh -p 2222" /backup/ user@remote:/backup/
- -a:归档模式(保留权限、时间戳等)
- -v:详细输出
- -z:压缩传输
- --partial:保留中断的传输
- --delete:同步删除操作
血泪教训:首次同步大数据量时,务必先用--dry-run参数测试!我曾经不小心把生产环境的--delete参数用反了方向...
3. 系统监控与性能分析
3.1 全能选手htop
比top更强大的交互式监控工具,安装命令:
bash复制# CentOS
yum install epel-release -y && yum install htop -y
# Ubuntu
apt install htop
使用技巧:
- F2进入设置界面,可以自定义显示列
- F3搜索进程,F4过滤进程
- F5树状显示进程关系
- 空格键标记进程,F9批量操作
3.2 网络流量监控iftop
实时查看网络流量分布:
bash复制iftop -nNP -i eth0
- -n:不解析主机名(加快显示)
- -P:显示端口号
- -i:指定网卡
典型问题排查场景:
bash复制# 按流量排序显示连接
iftop -nNP -i eth0 -t -s 10
4. 文本处理三剑客进阶
4.1 awk的统计魔法
统计Nginx日志中每个IP的访问量:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20
更复杂的统计示例(计算平均响应时间):
bash复制awk '$9==200 {sum+=$10;count++} END {print "平均响应时间:",sum/count,"ms"}' access.log
4.2 sed的批量修改技巧
批量替换配置文件中的参数:
bash复制sed -i.bak 's/old_value/new_value/g' *.conf
- -i.bak:原地修改并创建备份
- /g:全局替换
重要提醒:生产环境执行前先用不带-i的参数测试效果!我曾经因为漏写.bak后缀导致配置无法回滚。
5. 系统管理实用命令
5.1 服务管理systemctl
常用操作备忘录:
bash复制# 查看服务状态
systemctl status nginx -l
# 设置开机自启
systemctl enable nginx
# 重启服务(保持现有连接)
systemctl reload nginx
# 彻底重启
systemctl restart nginx
5.2 日志分析journalctl
查看系统日志的正确姿势:
bash复制# 追踪最新日志
journalctl -f -u nginx
# 按时间筛选
journalctl --since "2023-08-01" --until "2023-08-02"
# 按优先级过滤
journalctl -p err -b
6. 安全相关命令
6.1 SSH安全加固
生成更安全的密钥对:
bash复制ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519
- -t ed25519:使用更现代的算法
- -a 100:增加密钥派生迭代次数
6.2 文件权限检查
查找全局可写文件(安全审计常用):
bash复制find / -xdev -type f -perm -o=w -exec ls -lh {} + 2>/dev/null
7. 网络诊断工具集
7.1 全能网络侦探nc
端口测试的瑞士军刀:
bash复制# 监听端口(测试用)
nc -lkv 8080
# 连接测试
nc -zv example.com 80
7.2 路由追踪mtr
比traceroute更强大的工具:
bash复制mtr -rwbzc 10 www.baidu.com
- -r:生成报告
- -w:宽输出
- -c:发送多少次ping
- -z:显示AS号
8. 性能调优命令
8.1 内存分析free
正确解读内存使用:
bash复制free -h
重点关注available列,而不是free列。Linux会主动利用空闲内存做缓存。
8.2 IO监控iotop
发现磁盘IO瓶颈:
bash复制iotop -oP
- -o:只显示实际IO的进程
- -P:不折叠线程
9. 实用小技巧合集
9.1 历史命令优化
在~/.bashrc中添加:
bash复制# 增加历史记录数量
HISTSIZE=10000
HISTFILESIZE=20000
# 忽略重复命令和历史命令
HISTCONTROL=ignoreboth
# 添加时间戳
HISTTIMEFORMAT="%F %T "
9.2 快速目录跳转
安装autojump后:
bash复制j project # 快速跳转到经常访问的project目录
10. 终端效率工具
10.1 多屏管理tmux
基础工作流程:
bash复制tmux new -s work # 新建会话
Ctrl+b % # 垂直分屏
Ctrl+b " # 水平分屏
Ctrl+b d # 分离会话
tmux a -t work # 重新连接
10.2 文件管理器ranger
终端里的图形化体验:
bash复制ranger
快捷键:
- j/k:上下移动
- l:进入目录
- h:返回上级
- zh:显示隐藏文件
- i:预览文件
11. 开发相关命令
11.1 代码搜索ag
比grep更快的代码搜索:
bash复制ag "function_name" --python
- 自动忽略.gitignore中的文件
- 支持文件类型过滤
11.2 JSON处理jq
解析JSON的神器:
bash复制curl -s http://example.com/api | jq '.data[].name'
复杂查询示例:
bash复制jq '[.users[] | select(.age > 18) | {name: .name, email: .contact.email}]' data.json
12. 容器时代必备命令
12.1 Docker日常操作
常用命令速查:
bash复制# 查看容器资源使用
docker stats
# 查看容器进程
docker top container_name
# 进入容器
docker exec -it container_name /bin/bash
# 清理无用资源
docker system prune -f
12.2 容器日志查看
多容器日志追踪:
bash复制docker-compose logs -f --tail=100
13. 排错与调试
13.1 系统启动分析
查看启动耗时:
bash复制systemd-analyze blame
13.2 信号追踪strace
调试程序问题:
bash复制strace -ff -o trace.log ./program
关键参数:
- -p PID:附加到运行中的进程
- -e trace=file:只跟踪文件操作
- -s 1024:显示完整字符串
14. 硬件信息查询
14.1 全面硬件检测lshw
生成硬件报告:
bash复制lshw -html > hardware.html
14.2 PCI设备查询lspci
查看显卡等设备:
bash复制lspci -v | grep -i vga
15. 定时任务管理
15.1 crontab语法检查
避免常见错误:
bash复制# 每分钟执行(注意第一个*是分钟)
* * * * * command
# 每小时的第5分钟执行
5 * * * * command
重要提醒:命令中使用绝对路径!我遇到过因为PATH问题导致定时任务不执行的情况。
15.2 系统级定时任务
/etc/crontab的格式区别:
bash复制# 需要指定用户
* * * * * username command
16. 压缩与归档技巧
16.1 高效压缩pigz
多线程压缩工具:
bash复制tar -cvf - /data | pigz > data.tar.gz
16.2 分卷压缩split
大文件分卷处理:
bash复制tar -cvf - /bigdata | pigz | split -b 2G - bigdata.tar.gz.part
解压时:
bash复制cat bigdata.tar.gz.part* | pigz -d | tar -xvf -
17. 用户与权限管理
17.1 批量用户处理
创建多个用户:
bash复制for user in user{1..10}; do
useradd -m -s /bin/bash $user
echo "$user:Password123" | chpasswd
done
17.2 sudo权限审计
查看用户sudo记录:
bash复制grep sudo /var/log/auth.log
18. 环境变量管理
18.1 永久生效设置
正确修改环境变量:
bash复制# 对当前用户生效
echo 'export PATH=$PATH:/new/path' >> ~/.bashrc
# 对所有用户生效(需谨慎)
echo 'export PATH=$PATH:/new/path' >> /etc/profile
18.2 环境变量调试
查看实际生效值:
bash复制env | grep PATH
# 或者
echo $PATH | tr ':' '\n'
19. 软件包管理
19.1 YUM/DNF技巧
常用操作:
bash复制# 查看软件包内容
dnf repoquery -l package_name
# 查找提供某个文件的包
dnf provides */filename
19.2 APT高级用法
清理无用包:
bash复制apt autoremove --purge
查找软件:
bash复制apt-cache search keyword
20. 内核参数调优
20.1 临时修改sysctl
调整TCP参数:
bash复制sysctl -w net.ipv4.tcp_tw_reuse=1
20.2 永久生效配置
修改配置文件:
bash复制echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
sysctl -p
21. 系统救援命令
21.1 只读文件系统修复
强制重新挂载:
bash复制mount -o remount,rw /
21.2 文件系统检查
非破坏性检查:
bash复制fsck -n /dev/sda1
22. 时间同步管理
22.1 chronyd配置
查看时间同步状态:
bash复制chronyc tracking
22.2 手动时间同步
立即同步:
bash复制chronyc makestep
23. 磁盘空间分析
23.1 可视化工具ncdu
交互式磁盘分析:
bash复制ncdu /
23.2 大文件查找
快速定位大文件:
bash复制find / -xdev -type f -size +100M -exec du -h {} + | sort -rh | head -20
24. 进程管理进阶
24.1 进程优先级调整
提高进程优先级:
bash复制nice -n -20 important_process
24.2 后台进程管理
使用disown保持进程运行:
bash复制long_running_command &
disown %1
25. 终端复用技巧
25.1 screen基础用法
创建会话:
bash复制screen -S session_name
重新连接:
bash复制screen -r session_name
25.2 会话共享
多人协作:
bash复制screen -x shared_session
26. 剪贴板操作
26.1 终端复制粘贴
使用xclip:
bash复制# 复制到剪贴板
cat file.txt | xclip -selection clipboard
# 从剪贴板粘贴
xclip -selection clipboard -o > output.txt
27. 编码转换工具
27.1 文件编码转换
GBK转UTF-8:
bash复制iconv -f GBK -t UTF-8 input.txt -o output.txt
27.2 批量转换脚本
处理整个目录:
bash复制find . -name "*.txt" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;
28. 系统信息查询
28.1 全面系统信息
使用inxi:
bash复制inxi -Fxz
28.2 硬件详细信息
查看CPU:
bash复制lscpu
29. 网络配置管理
29.1 IP地址管理
临时添加IP:
bash复制ip addr add 192.168.1.100/24 dev eth0
29.2 路由表操作
添加默认网关:
bash复制ip route add default via 192.168.1.1
30. 安全扫描工具
30.1 端口扫描nmap
快速扫描:
bash复制nmap -T4 -A -v target_ip
30.2 漏洞检测lynis
系统安全审计:
bash复制lynis audit system
31. 日志轮转配置
31.1 logrotate配置
示例配置:
bash复制/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/nginx -s reload
endscript
}
32. 系统备份策略
32.1 全盘备份dd
创建镜像:
bash复制dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
32.2 增量备份rsnapshot
配置示例:
bash复制daily 7
weekly 4
monthly 3
33. 性能基准测试
33.1 磁盘IO测试
使用fio:
bash复制fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --group_reporting
33.2 网络带宽测试
iperf3用法:
bash复制# 服务端
iperf3 -s
# 客户端
iperf3 -c server_ip -t 30
34. 系统升级维护
34.1 内核升级
查看可用内核:
bash复制yum list kernel --showduplicates
34.2 安全更新
仅安装安全更新:
bash复制yum update --security
35. 虚拟化相关命令
35.1 KVM管理
创建虚拟机:
bash复制virt-install --name vm1 --ram 2048 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --vcpus 2 --os-type linux --os-variant centos7.0 --network bridge=br0 --graphics none --console pty,target_type=serial --location 'http://mirror.centos.org/centos/7/os/x86_64/' --extra-args 'console=ttyS0,115200n8 serial'
35.2 虚拟机监控
查看资源使用:
bash复制virsh domstats
36. 数据库管理命令
36.1 MySQL快速查询
不进入交互模式执行SQL:
bash复制mysql -u root -p -e "SHOW DATABASES;"
36.2 PostgreSQL常用操作
备份数据库:
bash复制pg_dump -U username -d dbname -f backup.sql
37. 防火墙管理
37.1 firewalld基础
开放端口:
bash复制firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
37.2 复杂规则配置
富规则示例:
bash复制firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept'
38. 系统资源限制
38.1 ulimit设置
修改文件打开数限制:
bash复制ulimit -n 65535
永久生效:
bash复制echo "* soft nofile 65535" >> /etc/security/limits.conf
38.2 cgroup控制
限制进程内存:
bash复制cgcreate -g memory:/mygroup
echo 100M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
echo $PID > /sys/fs/cgroup/memory/mygroup/tasks
39. 终端美化技巧
39.1 PS1提示符定制
高级提示符配置:
bash复制export PS1='\[\e[32m\]\u@\h \[\e[33m\]\w \[\e[31m\]$(git branch 2>/dev/null | grep "^*" | colrm 1 2)\[\e[0m\]\n\$ '
39.2 颜色别名设置
让输出更易读:
bash复制alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
40. 远程管理技巧
40.1 SSH隧道
本地端口转发:
bash复制ssh -L 3306:localhost:3306 user@remote_host
40.2 免密登录优化
~/.ssh/config配置:
bash复制Host myserver
HostName server.example.com
User myuser
IdentityFile ~/.ssh/id_ed25519
Port 2222
ServerAliveInterval 60
41. 系统日志分析
41.1 日志聚合技巧
使用multitail:
bash复制multitail -l 'ssh user@host1 "tail -f /var/log/nginx/access.log"' -l 'ssh user@host2 "tail -f /var/log/nginx/access.log"'
41.2 结构化日志处理
处理JSON日志:
bash复制cat log.json | jq '. | {time: .timestamp, message: .msg, user: .user}'
42. 系统启动管理
42.1 启动项控制
查看启动时间:
bash复制systemd-analyze critical-chain
42.2 服务依赖分析
查看服务关系:
bash复制systemctl list-dependencies nginx.service
43. 环境隔离技巧
43.1 chroot环境
创建基本环境:
bash复制mkdir -p /mnt/chroot/{bin,lib,lib64}
cp /bin/{bash,ls} /mnt/chroot/bin/
ldd /bin/bash | awk '{print $3}' | xargs -I {} cp {} /mnt/chroot/lib/
43.2 命名空间隔离
创建网络命名空间:
bash复制ip netns add mynet
ip netns exec mynet ip link set lo up
44. 系统调试技巧
44.1 动态库调试
查看依赖库:
bash复制ldd /usr/bin/nginx
44.2 系统调用追踪
使用strace:
bash复制strace -e trace=open,read,write -o trace.log ./program
45. 批量操作技巧
45.1 并行执行
使用GNU parallel:
bash复制ls *.log | parallel -j 4 "gzip {}"
45.2 循环处理
批量重命名:
bash复制for file in *.jpg; do mv "$file" "${file%.jpg}_backup.jpg"; done
46. 系统信息监控
46.1 综合监控glances
安装使用:
bash复制pip install glances
glances
46.2 历史监控sar
查看CPU历史:
bash复制sar -u -f /var/log/sa/sa10
47. 安全审计命令
47.1 登录审计
查看登录记录:
bash复制last -ai
47.2 文件完整性检查
使用AIDE:
bash复制aide --check
48. 系统清理维护
48.1 旧内核清理
安全删除:
bash复制dnf remove $(dnf repoquery --installonly --latest-limit=-2 -q)
48.2 日志清理
按时间清理:
bash复制find /var/log -type f -mtime +30 -exec rm -f {} \;
49. 网络流量分析
49.1 抓包分析tcpdump
捕获HTTP流量:
bash复制tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
49.2 流量重放tcpreplay
测试网络设备:
bash复制tcpreplay -i eth0 -M 100 capture.pcap
50. 系统优化总结
经过多年运维实践,我发现80%的日常操作其实只需要掌握约200个核心命令。关键在于理解每个命令的适用场景和组合用法,而不是死记硬背所有参数。建议新手从文件操作、系统监控和文本处理这三个领域开始,逐步扩展到网络管理和性能调优。
