在上一期Linux基础指令分享中,我们探讨了目录操作、文件查看等基础命令。今天我们将深入更多实用指令,这些命令就像瑞士军刀上的不同工具,每个都有其特定用途。掌握它们,你就能在纯命令行环境下高效完成90%的日常操作。
我使用Linux系统已有八年时间,从最初的不知所措到现在完全依赖命令行工作。这段经历让我深刻体会到:真正理解基础指令的底层逻辑,比死记硬背几十个命令参数更有价值。接下来分享的这些指令,都是经过实战检验的高频工具。
grep命令是文本搜索的利器。基本用法grep "pattern" filename,但它的强大之处在于正则表达式支持。例如查找所有包含IP地址的行:
bash复制grep -E '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' access.log
提示:
-i参数忽略大小写,-v反向匹配,-n显示行号
sed命令是流编辑器,适合批量替换文本。这个命令我每天都会用到,比如快速替换配置文件中的端口号:
bash复制sed -i 's/8080/9090/g' config/*.conf
注意:
-i直接修改原文件,测试时建议先不加此参数
awk命令是报表生成神器。我最常用它分析日志,比如统计Nginx日志中每个IP的访问次数:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
当需要对比两个配置文件差异时,diff命令比肉眼查找高效得多:
bash复制diff -u old.conf new.conf
-u参数生成统一格式差异,适合版本变更记录。
文件完整性校验方面,md5sum和sha256sum是必备工具。下载软件包后一定要做校验:
bash复制sha256sum package.tar.gz
将输出与官网提供的校验值对比,确保文件未被篡改。
ps aux是最常用的进程查看命令,但输出信息太多时,可以配合grep过滤:
bash复制ps aux | grep nginx
更直观的工具是htop,它像任务管理器的命令行版本,支持交互式操作。安装方法:
bash复制sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/RHEL
强制结束进程时,先用pgrep查找PID:
bash复制pgrep -f "python script.py"
kill -9 <PID>
警告:
-9信号会强制终止进程,可能导致数据丢失,应先尝试普通kill
free -h以人类可读格式显示内存使用情况。我习惯用watch命令动态监控:
bash复制watch -n 1 free -h
df -h查看磁盘空间,特别注意/var分区,日志文件常会占满空间:
bash复制df -h | grep -v tmpfs
iotop和iftop分别监控磁盘和网络IO,排查性能瓶颈时非常有用:
bash复制sudo iotop -o # 只显示实际IO的进程
sudo iftop -i eth0
ping和traceroute是基础网络诊断工具。但更推荐mtr,它结合了两者功能:
bash复制mtr -rw google.com
netstat已被ss取代,查看监听端口的新方法是:
bash复制ss -tulnp
参数说明:-tTCP, -uUDP, -l监听, -n数字格式, -p显示进程
scp是加密的文件传输命令,我常用它备份服务器配置:
bash复制scp -P 2222 /backup/config.tar.gz user@remote:/backup/
更现代的替代品是rsync,支持增量备份和断点续传:
bash复制rsync -avz --progress /data user@remote:/backup/
chmod的数字表示法其实很简单:4读(r)、2写(w)、1执行(x)。设置权限为rwxr-xr--:
bash复制chmod 754 script.sh
特殊权限中,chmod +t设置粘滞位(常用于/tmp目录),chmod +s设置SUID位。
添加用户到附加组(如docker组):
bash复制sudo usermod -aG docker $USER
重要:必须重新登录才能使组变更生效
查看用户所属组:
bash复制groups $USER
tmux或screen可以让会话在后台运行。我的tmux配置模板:
bash复制tmux new -s work
# 按Ctrl+b % 分割窗口
# 按Ctrl+b d 分离会话
tmux attach -t work
history | grep "apt install"可以查找过去执行过的安装命令。
设置常用命令别名,添加到~/.bashrc:
bash复制alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'
ctrl+r开启反向搜索历史命令,比翻历史记录高效得多。
首先检查文件权限和所有者:
bash复制ls -l /path/to/file
如果是脚本文件,确保有执行权限:
bash复制chmod +x script.sh
检查命令是否安装:
bash复制which command_name
如果已安装但找不到,可能是PATH环境变量问题:
bash复制echo $PATH
查找大文件:
bash复制sudo du -h --max-depth=1 / | sort -h
清理旧日志:
bash复制sudo journalctl --vacuum-time=7d
掌握这些基础指令后,建议通过以下方式继续提升:
man grep)最后分享一个真实案例:有次服务器负载突然飙升,通过top发现是某个Python进程异常,用strace -p <PID>追踪系统调用,最终定位到是日志文件循环写入导致的。这种问题GUI工具很难诊断,命令行却能快速定位。