1. Linux命令操作基础回顾
作为一个在Linux环境下摸爬滚打十多年的老运维,我深知命令行操作是每个技术人员必须掌握的生存技能。很多人觉得Linux命令难记,其实关键在于理解其设计哲学——每个命令都是小而美的工具,通过管道组合就能完成复杂任务。今天要分享的这些命令,都是我日常工作中使用频率最高的"瑞士军刀"。
在开始具体命令讲解前,有必要强调几个基本概念:
- 命令格式通常为:
命令 [选项] [参数] - 选项分为短格式(-h)和长格式(--help)
- 参数是命令操作的对象(文件/目录等)
- 使用
man 命令名可以查看完整手册
提示:所有命令都区分大小写,输入时注意保持一致性
2. 文件处理三剑客进阶用法
2.1 grep的文本搜索艺术
grep命令的威力远超大多数人的想象。基础用法是搜索包含特定模式的行:
bash复制grep "error" /var/log/syslog
但它的高级功能才是真正生产力工具:
-i忽略大小写-v反向匹配(显示不包含模式的行)-A 3 -B 2显示匹配行及前后若干行(After/Before)-r递归搜索目录--color=auto高亮显示匹配内容
我常用的组合命令:
bash复制grep -rin --color=auto "connection timeout" /var/log/
注意:在大型日志文件中使用正则表达式时,建议先用
-q测试是否匹配,避免直接输出大量内容
2.2 sed的流编辑魔法
sed是文本处理的"手术刀",特别适合批量修改文件。最常用的替换操作:
bash复制sed 's/old/new/g' file.txt
几个实用技巧:
-i.bak直接修改文件并创建备份(危险操作前的保险)/pattern/d删除匹配行10,20d删除10-20行1~2d删除奇数行
实际案例:批量替换配置文件中的IP地址
bash复制sed -i.bak 's/192.168.1.100/10.0.0.50/g' *.conf
2.3 awk的数据处理之道
awk其实是一门编程语言,这里先介绍基础字段处理:
bash复制awk '{print $1,$3}' access.log
常用内置变量:
NR当前记录号(行号)NF当前记录的字段数FS输入字段分隔符(默认空格)OFS输出字段分隔符
统计Nginx日志中每个IP的访问次数:
bash复制awk '{ip[$1]++} END {for(i in ip) print i,ip[i]}' access.log | sort -nrk2
3. 系统监控与性能分析命令
3.1 top/htop的深度解读
top命令看似简单,但隐藏着很多实用技巧:
- 按
1显示所有CPU核心详情 - 按
M按内存排序,P按CPU排序 Shift + >/<改变排序方向W保存当前配置到~/.toprc
htop是增强版,支持:
- 鼠标操作和树状视图
- 进程过滤(F4)
- 批量操作(F7/F8调整优先级)
提示:在容器环境中,建议使用
ctop专门监控容器资源
3.2 网络监控三板斧
iftop实时监控网络流量:
bash复制iftop -nNP -i eth0
nethogs按进程显示带宽占用:
bash复制nethogs eth0
ss替代netstat的现代工具:
bash复制ss -tulnp # 查看监听端口
ss -s # 统计信息
3.3 磁盘IO分析工具
iotop类似top的磁盘监控:
bash复制iotop -oPa
iostat查看设备负载:
bash复制iostat -x 1 # 每秒刷新
关键指标解读:
%util设备利用率(>70%可能瓶颈)awaitI/O平均等待时间(ms)svctm服务时间(应小于await)
4. 实用系统管理命令
4.1 journalctl日志管理
systemd时代的日志查看方式:
bash复制journalctl -u nginx --since "1 hour ago"
journalctl -p err -b # 本次启动的错误日志
journalctl -f # 实时跟踪(类似tail -f)
常用过滤选项:
-S/--since和-U/--until时间范围-k仅显示内核消息--disk-usage查看日志占用空间
4.2 定时任务管理
crontab命令要点:
bash复制crontab -l # 列出当前任务
crontab -e # 编辑(会检查语法)
特殊时间写法:
@reboot启动时运行@daily每天午夜*/5 * * * *每5分钟
重要:复杂的任务建议写成脚本再通过crontab调用
4.3 用户与权限管理
adduser比useradd更友好:
bash复制adduser --gecos "" --disabled-password username
passwd的实用选项:
bash复制passwd -e username # 强制下次登录修改密码
passwd -l username # 锁定账户
visudo安全编辑sudoers:
bash复制visudo -f /etc/sudoers.d/newfile
5. 文件系统操作进阶
5.1 find命令的深度应用
基本语法:
bash复制find /path -name "*.log" -mtime +7
实用组合示例:
bash复制# 查找并删除7天前的临时文件
find /tmp -type f -mtime +7 -delete
# 查找大于100M的日志文件
find /var/log -size +100M -exec ls -lh {} \;
# 查找所有可执行文件
find /usr/bin -perm /a=x
5.2 rsync文件同步艺术
基本同步:
bash复制rsync -avz /source/ user@remote:/dest/
高级选项:
--delete删除目标多余文件--exclude排除特定文件--bwlimit限制带宽--progress显示进度
增量备份实战:
bash复制rsync -avz --link-dest=/path/to/last_backup /source/ /path/to/new_backup
5.3 tar归档压缩技巧
创建压缩包:
bash复制tar -czvf archive.tar.gz /path/to/dir
解压到指定目录:
bash复制tar -xzvf archive.tar.gz -C /target/dir
查看内容不解压:
bash复制tar -tzvf archive.tar.gz
6. 网络诊断与安全工具
6.1 curl的调试技巧
基本请求:
bash复制curl -v http://example.com
常用选项:
-o保存到文件-O使用远程文件名保存-L跟随重定向-H添加请求头-dPOST数据
调试API示例:
bash复制curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com
6.2 openssl证书检查
查看证书信息:
bash复制openssl x509 -in cert.pem -text -noout
测试SSL连接:
bash复制openssl s_client -connect example.com:443 -servername example.com
生成自签名证书:
bash复制openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
6.3 防火墙管理
UFW简易防火墙:
bash复制ufw allow 22/tcp
ufw enable
firewalld高级配置:
bash复制firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
7. 性能调优与故障排查
7.1 内存问题诊断
free命令解读:
bash复制free -h
关注available而非free,因为Linux会利用未用内存做缓存
vmstat监控内存压力:
bash复制vmstat 1
关键指标:
siswap insoswap outus用户CPUsy系统CPU
7.2 进程状态分析
strace跟踪系统调用:
bash复制strace -p <PID> -f -s 1024
lsof查看打开文件:
bash复制lsof -i :80 # 查看80端口进程
lsof +D /var/log # 查看目录打开情况
7.3 系统启动分析
查看启动时间:
bash复制systemd-analyze
systemd-analyze blame
内核消息查看:
bash复制dmesg -T | tail -20
8. 终端生产力工具
8.1 tmux终端复用器
基本操作:
bash复制tmux new -s session_name # 新建会话
Ctrl+b d # 分离会话
tmux attach -t session_name # 重新连接
窗口管理:
Ctrl+b c新建窗口Ctrl+b ,重命名窗口Ctrl+b %垂直分割Ctrl+b "水平分割
8.2 命令行历史技巧
搜索历史命令:
bash复制Ctrl+r 搜索词
重复上条命令:
bash复制!! # 完整重复
!$ # 上条命令的最后一个参数
!ssh # 执行最近以ssh开头的命令
8.3 别名与函数
永久别名:
bash复制echo 'alias ll="ls -alh"' >> ~/.bashrc
实用函数示例:
bash复制function mkcd() {
mkdir -p "$1" && cd "$1"
}
9. 实用脚本片段
9.1 批量重命名
使用rename命令:
bash复制rename 's/\.jpeg$/\.jpg/' *.jpeg
使用mmv工具:
bash复制mmv '*.old' '#1.new'
9.2 文件编码转换
检测编码:
bash复制file -i filename.txt
转换编码:
bash复制iconv -f GBK -t UTF-8 input.txt -o output.txt
9.3 随机密码生成
使用openssl:
bash复制openssl rand -base64 12
使用pwgen:
bash复制pwgen -s 16 1
10. 系统信息查询
10.1 硬件信息
CPU信息:
bash复制lscpu
cat /proc/cpuinfo
内存信息:
bash复制dmidecode -t memory
10.2 系统版本
发行版信息:
bash复制lsb_release -a
cat /etc/*release
内核版本:
bash复制uname -a
cat /proc/version
10.3 环境变量
查看所有变量:
bash复制printenv
查找特定变量:
bash复制echo $PATH
env | grep LANG
这些命令只是Linux强大功能的冰山一角,但掌握它们已经能解决90%的日常运维问题。建议先熟练使用文中提到的命令,再逐步探索更高级的功能。记住,Linux命令行的精髓在于组合使用——通过管道将简单命令连接起来,就能完成复杂的任务。