作为一名从业多年的Linux系统管理员,我深知命令行操作是每个技术人员必须掌握的生存技能。与图形界面相比,命令行提供了更高效、更灵活的系统控制方式。下面我将分享那些真正高频使用的核心命令,以及它们在实际工作中的典型应用场景。
文件系统操作是Linux日常工作的基础,掌握这些命令能让你在服务器上如鱼得水:
ls:这个看似简单的命令其实隐藏着许多实用技巧。除了常见的ls -l(详细列表)和ls -a(显示隐藏文件)外,我经常使用ls -lh组合,它能以人类可读的格式(KB/MB/GB)显示文件大小,特别适合快速查看大文件。另一个实用参数是ls -t,按修改时间排序,配合head命令可以快速找到最近修改的文件。
find:这个强大的搜索工具远比表面看起来复杂。我常用的高级用法包括:
bash复制find /var/log -name "*.log" -mtime -7 -size +10M
这个命令搜索/var/log目录下7天内修改过且大于10MB的日志文件。-exec参数更是神器,可以对找到的文件执行操作,例如批量修改权限:
bash复制find . -type f -name "*.sh" -exec chmod 755 {} \;
特别注意:使用
rm -rf时要格外小心,特别是在root权限下。我有个惨痛教训:曾经误输入rm -rf / var/log(/和var之间多了一个空格),差点酿成大祸。建议先使用echo测试要删除的路径,或者使用trash-cli这类回收站工具替代直接删除。
文本处理是Linux的强项,这三个命令组合使用可以解决大多数日志分析需求:
grep:除了基本的文本搜索,我常用这些高级选项:
grep -A 3 -B 2 "error" app.log:显示匹配行及其前后3行和2行上下文grep -E "error|warning|critical" app.log:使用正则表达式匹配多个模式grep -r "function_name" /path/to/code/:递归搜索代码目录awk:虽然原文没提到,但作为文本处理瑞士军刀,值得补充:
bash复制awk '{print $1,$4}' access.log # 提取日志中第1和第4列
awk -F: '{print $1}' /etc/passwd # 以冒号为分隔符提取用户名
sed:流编辑器,适合批量替换:
bash复制sed -i 's/old_string/new_string/g' file.txt # 文件内全局替换
sed -n '10,20p' file.log # 只打印10到20行
当服务器出现性能问题时,这些命令就是你的诊断工具包:
top/htop:实时监控系统状态。htop是top的增强版,支持鼠标操作和颜色高亮。关键指标关注:
free -h:内存使用情况。重点关注available列,而非free列,因为Linux会主动缓存数据以提高性能。
df -h:磁盘空间检查。添加-T参数可以显示文件系统类型:
bash复制df -hT | grep -v tmpfs # 排除临时文件系统
iostat:磁盘I/O监控(需安装sysstat包):
bash复制iostat -x 1 # 每秒显示一次详细磁盘统计
Linux的权限系统是其安全基石,理解透彻才能避免"Permission denied"的困扰。
创建用户时,这些选项最实用:
bash复制useradd -m -s /bin/bash -G sudo,developers wzxg
-m:创建家目录-s:指定登录shell-G:附加组(让用户获得sudo权限或加入开发组)密码策略管理:
bash复制chage -l wzxg # 查看密码过期信息
chage -M 90 wzxg # 设置密码90天后过期
ls -l显示的权限字符串如-rwxr-xr--,分解来看:
-普通文件,d目录,l链接等)rwx分别代表读(4)、写(2)、执行(1)权限修改权限的两种方式:
bash复制chmod 755 script.sh # 数字方式:7=4+2+1(rwx),5=4+1(r-x)
chmod u+x,g-w,o-r file.txt # 符号方式
特殊权限标志:
设置方法:
bash复制chmod 4755 /usr/bin/special # SetUID
chmod 2775 /shared_dir # SetGID
chmod 1777 /tmp # Sticky Bit
服务器运维离不开网络调试,这些命令能帮你快速定位问题。
ping:最基础的连通性测试。高级用法:
bash复制ping -c 5 -i 0.2 wzxg.com # 发送5个包,间隔0.2秒
telnet:测试端口连通性(很多系统默认不安装):
bash复制telnet wzxg.com 80 # 测试80端口
netstat/ss:查看网络连接状态。推荐使用更快的ss:
bash复制ss -tulnp # 显示所有监听端口和对应进程
ip:取代老旧的ifconfig,功能更强大:
bash复制ip addr show # 显示所有接口
ip route # 查看路由表
ip -s link # 显示网络统计
tcpdump:网络抓包分析:
bash复制tcpdump -i eth0 port 80 -w capture.pcap # 抓取80端口流量
nc:瑞士军刀般的网络工具:
bash复制nc -zv wzxg.com 80 # 快速端口扫描
nc -l 8080 # 简易监听8080端口
作为Linux默认编辑器,Vim的学习曲线虽陡峭,但掌握后编辑效率会大幅提升。
命令模式:刚启动时的默认模式,所有按键都是命令
h/j/k/l(左/下/上/右),w(下一个词首),$(行尾)yy复制行,dd剪切行,p粘贴u撤销,Ctrl+r重做插入模式:实际编辑文本的模式
i(当前位置),a(下一个字符),o(新行)I(行首),A(行尾),O(上一行)末行模式:执行文件级操作
:w保存,:q退出,:wq保存退出:%s/old/new/g全局替换:set nu显示行号,:set paste粘贴模式多文件编辑:
vim复制:e another_file.txt # 打开新文件
:bn # 切换到下一个buffer
:bp # 上一个buffer
:ls # 列出所有buffer
窗口分割:
vim复制:split # 水平分割
:vsplit # 垂直分割
Ctrl+w + 方向键 # 切换窗口
宏录制:重复性操作的利器
qa开始录制到寄存器aq停止录制@a执行宏插件管理:使用Vundle等插件管理器可以扩展Vim功能:
vim复制Plugin 'scrooloose/nerdtree' # 文件浏览器
Plugin 'tpope/vim-fugitive' # Git集成
多年运维经验积累的常见问题及解决方法:
现象:df -h显示磁盘使用率接近100%
排查步骤:
bash复制du -h --max-depth=1 / | sort -h
bash复制find /var/log -type f -size +100M
bash复制journalctl --vacuum-size=200M # 限制systemd日志大小
现象:free -h显示available内存接近0
解决方法:
bash复制ps aux --sort=-%mem | head
bash复制vmstat 1 # 查看内存变化趋势
bash复制echo 3 > /proc/sys/vm/drop_caches
排查流程:
bash复制ip addr # 确认IP配置正确
ping 8.8.8.8 # 测试外网连通性
bash复制ip route # 查看默认网关
traceroute wzxg.com # 跟踪路由路径
bash复制iptables -L -n # 查看规则
通过管道(|)将简单命令组合成强大工具:
bash复制# 统计日志中不同错误出现的次数
grep -o "ERROR [A-Z_]\+" app.log | sort | uniq -c | sort -nr
# 监控目录变化
while true; do ls -l /path/to/dir | md5sum; sleep 5; done
一个实用的备份脚本示例:
bash复制#!/bin/bash
# 简单备份脚本
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d)
TARGET_DIRS=("/var/www" "/etc" "/home")
mkdir -p "$BACKUP_DIR/$DATE"
for dir in "${TARGET_DIRS[@]}"; do
tar -czf "$BACKUP_DIR/$DATE/$(basename $dir).tar.gz" "$dir"
done
# 删除7天前的备份
find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \;
使用crontab设置定时任务:
bash复制crontab -e # 编辑当前用户的任务
常用格式:
code复制* * * * * command_to_run
┬ ┬ ┬ ┬ ┬
│ │ │ │ └── 星期几 (0 - 6) (0是周日)
│ │ │ └──── 月份 (1 - 12)
│ │ └────── 日 (1 - 31)
│ └──────── 小时 (0 - 23)
└────────── 分钟 (0 - 59)
示例:
bash复制0 3 * * * /path/to/backup.sh # 每天3点执行备份
*/5 * * * * /path/to/monitor.sh # 每5分钟执行监控
掌握这些Linux核心命令和Vim技巧后,你会发现命令行操作远比图形界面高效。建议在日常工作中刻意练习这些命令,逐渐培养肌肉记忆。遇到不熟悉的命令时,记得使用man查看手册页,例如man ls会显示ls命令的完整文档。