作为一个在Linux环境下摸爬滚打十多年的老运维,我始终认为命令行是Linux系统的灵魂所在。与图形界面相比,命令行操作具有不可替代的优势:它消耗资源更少(在老旧服务器上尤其明显)、可脚本化批量执行、能精确控制每个操作参数,更重要的是——当你通过SSH远程管理服务器时,命令行往往是唯一可用的交互方式。
初学者的常见误区是试图一次性记住所有命令。实际上,掌握约20个核心命令就足以应对80%的日常运维工作。我将这些命令分为六个关键类别:
重要提示:所有Linux命令都支持
--help参数获取简易帮助,更详细的文档请使用man 命令名查看。养成查阅手册的习惯比死记硬背更有效。
pwd命令看似简单,但在复杂的目录跳转后能快速确认当前位置。我习惯在PS1提示符中直接显示当前路径,这个技巧可以通过修改~/.bashrc实现:
bash复制export PS1='[\u@\h \w]\$ '
ls命令的进阶用法值得重点掌握:
bash复制ls -lh # 人类可读的文件大小显示(KB/MB/GB)
ls -lt # 按修改时间倒序排列
ls -d */ # 仅显示子目录
ls -la # 显示包括隐藏文件在内的所有文件
cp/mv/rm这三个命令都支持-i(交互确认)和-v(显示详情)参数。在生产环境中,我强烈建议使用别名设置默认启用这些安全选项:
bash复制alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -iv'
文件查找命令find的强大之处在于其丰富的条件组合:
bash复制find /var/log -name "*.log" -mtime +30 -size +10M -exec ls -lh {} \;
# 查找/var/log目录下:文件名匹配*.log、修改时间超过30天、大小超过10MB的文件并列出详情
基础用法:
bash复制grep "error" /var/log/syslog # 简单匹配
grep -i "warning" file.txt # 忽略大小写
grep -v "^#" /etc/nginx/nginx.conf # 排除注释行
进阶技巧:
bash复制grep -E "error|warning" file.log # 扩展正则(等价于egrep)
grep -A3 -B2 "panic" kernel.log # 显示匹配行前后各3/2行内容
zgrep "timeout" /var/log/*.gz # 直接搜索压缩文件
最常用的替换操作:
bash复制sed 's/foo/bar/g' file.txt # 全局替换
sed -i.bak 's/127.0.0.1/localhost/' config # 直接修改文件并备份
sed -n '10,20p' access.log # 只打印10-20行
基础字段处理:
bash复制awk '{print $1,$3}' data.txt # 打印第1和第3列
awk -F: '{print $1,$6}' /etc/passwd # 指定冒号为分隔符
统计计算示例:
bash复制awk '{sum+=$3} END {print sum}' sales.dat # 对第三列求和
awk 'NR%2==1 {print}' file.txt # 打印奇数行
top命令的增强版htop需要额外安装但更易用。常规监控指标关注点:
watch命令可以定期执行任何命令:
bash复制watch -n 1 'df -h | grep /dev/sda1' # 每秒刷新磁盘使用情况
查找进程的几种方式:
bash复制ps aux | grep nginx # 经典组合
pgrep -u root -a sshd # 专用进程查找工具
pstree -p # 树形显示进程关系
信号控制示例:
bash复制kill -9 1234 # 强制终止(SIGKILL)
kill -HUP $(pgrep nginx) # 优雅重载配置(SIGHUP)
pkill -f "python script.py" # 按完整命令匹配终止
Linux权限由三组rwx构成,数字表示法:
特殊权限位:
bash复制chmod +s file # 设置SUID/SGID
chmod +t dir # 设置粘滞位(/tmp常用)
创建用户时的完整参数示例:
bash复制useradd -m -s /bin/bash -G sudo,developers -c "Dev User" dev01
关键参数:
-m 创建家目录-s 指定登录shell-G 附加组(多个组用逗号分隔)-c 注释信息连通性测试组合拳:
bash复制ping -c 4 example.com # 基本连通测试
traceroute -n 8.8.8.8 # 路由追踪(避免DNS解析)
mtr -rwbzc 20 example.com # 综合诊断工具
端口检查方案:
bash复制telnet example.com 80 # 简单测试
nc -zv example.com 22-25 # 扫描端口范围
ss -tulnp # 显示本机监听端口(比netstat更快)
Debian/Ubuntu系:
bash复制apt update # 更新源数据
apt install -y nginx # 自动确认安装
apt purge package # 彻底删除(含配置)
RHEL/CentOS系:
bash复制yum makecache # 重建缓存
yum install --downloadonly pkg # 仅下载不安装
yum history undo 23 # 回滚特定事务
后台任务管理:
bash复制python long_run.py & # 放入后台
jobs # 查看后台任务
fg %1 # 调回前台
tmux # 更专业的终端复用工具
命令历史优化:
bash复制!$ # 上条命令的最后一个参数
!ssh # 执行最近以ssh开头的命令
ctrl+r # 反向搜索历史
"Command not found"的可能原因:
磁盘空间占满但找不到大文件?试试:
bash复制lsof +L1 # 查看被删除但未释放的文件
du -xh / | sort -h | tail -n 20 # 查找最大的20个目录
推荐的学习路径:
经典参考书籍:
我在实际工作中发现,最有效的学习方式是: