linux命令技巧

Linux命令是日常系统管理和开发工作中的核心工具,掌握高效的命令技巧能显著提升工作效率,以下从文件操作、文本处理、系统监控、进程管理及网络配置等维度,分享实用技巧。

linux命令技巧

文件操作:高效管理数据基石

文件操作是Linux使用中最频繁的任务,除了基础的lscdcpmvrm,以下技巧能大幅提升操作效率。

批量重命名与移动
使用rename命令结合正则表达式可快速批量重命名文件,例如将所有.txt文件扩展名改为.doc

rename 's/\.txt$/\.doc/' *.txt

若需按序号重命名文件(如将file1.jpgfile5.jpg重命名为image_001.jpgimage_005.jpg),可通过循环实现:

for i in {1..5}; do mv "file$i.jpg" "image_$(printf '%03d' $i).jpg"; done

精确查找文件
find命令是文件查找的利器,结合参数可实现复杂需求,例如查找最近7天内修改过的.log文件并删除:

find /var/log -name "*.log" -mtime -7 -exec rm {} \;

若需查找大于100MB的文件并按大小排序:

find / -type f -size +100M -exec ls -lh {} \; | sort -k5hr

快速统计目录大小
使用du命令结合--max-depth参数可递归查看目录层级大小,例如查看当前目录下各子目录大小(限制深度为1):

du -h --max-depth=1 | sort -hr

文本处理:从数据中提取价值

Linux文本处理工具(如grepsedawksort)是数据分析的“瑞士军刀”,通过组合使用可实现复杂文本操作。

高效过滤与匹配
grep支持正则表达式和颜色高亮,例如过滤包含error但不包含warning的日志行:

grep -v 'warning' logfile.log | grep --color=auto 'error'

若需递归搜索目录下所有文件中的关键词:

grep -r "TODO" /path/to/project --include="*.py"

流编辑器批量修改
sed可实现对文本的批量替换和删除,例如全局替换文件中的old_strnew_str(注意备份原文件):

sed -i 's/old_str/new_str/g' file.txt

若需删除文件中所有空行:

linux命令技巧

sed '/^$/d' file.txt > new_file.txt

数据提取与计算
awk擅长按列处理文本,例如提取日志文件中的IP地址并统计访问次数:

awk '{print $1}' access.log | sort | uniq -c | sort -nr

若需计算某列的平均值(如统计第三列数值的平均值):

awk '{sum+=$3} END {print sum/NR}' data.txt

系统监控:实时掌握运行状态

系统监控是确保服务器稳定运行的关键,通过命令可快速查看资源使用情况和进程状态。

实时资源监控
top命令默认按CPU使用率排序,通过shift+p可切换为按内存排序,shift+m则按内存使用率排序,若需以更友好的界面展示,可使用htop(需安装):

htop --sort-cpu # 按CPU排序,支持彩色进程树

磁盘I/O与文件系统监控
iostat是磁盘性能监控工具,通过-dx参数可查看设备详细统计信息:

iostat -dx 2 5 # 每2秒刷新一次,共5次

若需查看文件系统挂载信息和空间使用情况:

df -hT | grep -vE 'tmpfs|squashfs' # 过滤临时文件系统

网络流量监控
iftop可实时显示网络接口的流量情况,按IP协议排序:

iftop -i eth0 -nNP # 指定网卡,显示端口和主机名

进程管理:精准控制任务运行

进程管理涉及任务启动、终止、优先级调整等,合理使用命令可避免系统资源耗尽。

进程查找与终止
通过pgrep可快速查找进程ID,例如查找名为nginx的进程:

pgrep -f nginx

终止进程时,优先使用kill(正常终止),若无响应则用kill -9(强制终止):

kill -9 $(pgrep -f nginx)

后台任务与优先级
使用nohup命令可使进程在后台运行并忽略挂断信号,输出会重定向到nohup.out

linux命令技巧

nohup python train.py > log.txt 2>&1 &

调整进程优先级可通过nice(启动时设置)和renice(运行中调整),例如降低nginx进程优先级:

renice -n 10 -p $(pgrep -f nginx)

定时任务管理
crontab用于设置周期性任务,例如每天凌晨2点执行备份脚本:

0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1

通过crontab -l查看任务列表,crontab -e编辑任务。

网络配置:排查与优化连接

网络故障排查和配置是运维常见工作,通过命令可快速定位问题并优化连接。

网络连通性测试
ping测试主机可达性,traceroute追踪路由路径:

ping -c 4 8.8.8.8 # 发送4个包后退出
traceroute -n www.baidu.com # 不解析主机名,直接显示IP

端口与连接查看
netstatss用于查看端口监听和连接状态,ssnetstat的替代品,速度更快:

ss -tulnp | grep :8080 # 查看8080端口监听情况
netstat -an | ESTABLISHED # 查看已建立的连接

网络抓包分析
tcpdump是强大的网络抓包工具,例如抓取访问本机80端口的HTTP流量并保存为文件:

tcpdump -i any -w capture.pcap 'tcp port 80 and host 192.168.1.100'

掌握这些Linux命令技巧,不仅能提升日常操作效率,更能快速解决系统管理和开发中的复杂问题,持续练习并探索命令组合,将让Linux工具发挥更大价值。