作为一名运维工程师,熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护,还是面试时的技术考核,Linux命令都是绕不开的核心技能。本文将从实战角度出发,系统梳理运维工程师必须掌握的Linux命令,并结合实际场景解析其应用方法。
一、文件和目录操作:基础中的基础
1.1 文件查看命令
# 查看文件内容 cat/etc/passwd # 显示完整文件内容 more /var/log/messages # 分页查看大文件 less /var/log/syslog # 更灵活的分页查看 head-20 /var/log/nginx.log # 查看文件前20行 tail-f /var/log/apache.log # 实时监控日志文件
面试常问:more和less的区别?
?more只能向前翻页,less可以前后翻页
?less占用内存更少,适合查看大文件
?less支持搜索功能(/关键词)
1.2 文件查找命令
# find命令的高级用法 find /var/log -name"*.log"-mtime -7 # 查找7天内修改的日志文件 find /home -typef -size +100M # 查找大于100M的文件 find /etc -name"*.conf"-execgrep -l"port"{} ; # 查找包含port的配置文件 # locate命令(需要定期更新数据库) updatedb # 更新文件数据库 locate nginx.conf # 快速定位文件 # which和whereis whichpython3 # 查找命令路径 whereis nginx # 查找二进制文件、源码、手册位置
1.3 文件权限管理
# 权限查看和修改 ls-la /etc/passwd # 查看详细权限信息 chmod755 /usr/local/bin/script.sh # 修改权限 chmodu+x,g+r,o-w filename # 使用符号模式 chownnginx:nginx /var/www/html # 修改所有者和组 chgrpwww-data /var/log/nginx/ # 修改组所有权 # 特殊权限 chmod+t /tmp # 设置粘滞位 chmod+s /usr/bin/passwd # 设置SUID
二、系统监控与性能分析
2.1 系统资源监控
# CPU和内存监控 top # 实时查看系统状态 htop # 更美观的top ps aux | grep nginx # 查看特定进程 ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head-10 # 按CPU使用率排序 # 内存分析 free -h # 查看内存使用情况 cat/proc/meminfo # 详细内存信息 vmstat 1 5 # 每秒显示一次,共5次系统状态
2.2 磁盘空间管理
# 磁盘使用情况 df-h # 查看磁盘使用率 du-sh /var/log/* # 查看目录大小 du-ah /home |sort-rh |head-20 # 查找最大的20个文件/目录 # 磁盘IO监控 iostat -x 1 # 每秒显示磁盘IO统计 iotop # 实时查看进程IO使用情况
2.3 网络监控
# 网络连接状态 netstat -tulpn # 查看端口监听状态 ss -tulpn # 更现代的netstat替代品 lsof -i :80 # 查看80端口被哪个进程占用 # 网络流量监控 iftop # 实时网络流量监控 nethogs # 按进程显示网络使用情况 tcpdump -i eth0 port 80 # 抓包分析
三、文本处理与日志分析
3.1 文本处理三剑客
# grep:文本搜索 grep -r"error"/var/log/ # 递归搜索错误日志 grep -i"failed"/var/log/auth.log # 忽略大小写搜索 grep -v"INFO"/var/log/app.log |head-20 # 排除INFO级别日志 grep -E"192.168.1.[0-9]+"access.log # 使用正则表达式 # sed:文本编辑 sed's/old/new/g'file.txt # 替换所有old为new sed -n'10,20p'file.txt # 显示10-20行 sed -i's/DEBUG/INFO/g'config.conf # 直接修改文件 sed'/^#/d'config.conf # 删除注释行 # awk:文本分析 awk'{print $1}'/var/log/nginx/access.log # 提取第一列(IP地址) awk -F:'{print $1}'/etc/passwd # 使用冒号分隔符 awk'$3 > 100 {print $0}'data.txt # 条件过滤
3.2 日志分析实战
# 分析访问日志 # 统计访问量最高的IP awk'{print $1}'access.log |sort|uniq-c |sort-nr |head-10 # 统计404错误 awk'$9 == 404 {print $0}'access.log |wc-l # 分析访问时间分布 awk'{print $4}'access.log |cut-d: -f2 |sort|uniq-c # 统计不同状态码数量 awk'{print $9}'access.log |sort|uniq-c |sort-nr
四、进程管理与服务控制
4.1 进程管理
# 进程控制 kill-9 PID # 强制终止进程 killall nginx # 终止所有nginx进程 pkill -f"python script" # 按名称模式终止进程 pgrep -f nginx # 查找进程PID # 后台任务管理 nohupcommand& # 后台运行命令 jobs # 查看后台任务 bg%1 # 将任务转到后台 fg%1 # 将任务调到前台
4.2 系统服务管理
# SystemD服务管理 systemctl start nginx # 启动服务 systemctl stop nginx # 停止服务 systemctl restart nginx # 重启服务 systemctl reload nginx # 重载配置 systemctlenablenginx # 设置开机自启 systemctldisablenginx # 禁止开机自启 systemctl status nginx # 查看服务状态 # 查看服务日志 journalctl -u nginx # 查看nginx服务日志 journalctl -f -u nginx # 实时跟踪日志
五、网络配置与故障排查
5.1 网络配置
# IP配置 ip addr show # 查看IP地址 ip route show # 查看路由表 iplinkshow # 查看网络接口 # 传统网络命令 ifconfig eth0 # 查看网卡信息 route -n # 查看路由表 arp -a # 查看ARP表
5.2 网络故障排查
# 连通性测试 ping -c 4 google.com # 测试网络连通性 traceroute google.com # 追踪路由路径 mtr google.com # 实时路由追踪 # 端口测试 telnet 192.168.1.1 80 # 测试端口连通性 nc -zv 192.168.1.1 80 # 使用nc测试端口
六、压缩与备份
6.1 文件压缩
# tar命令 tar -czf backup.tar.gz /var/www/ # 创建压缩包 tar -xzf backup.tar.gz # 解压缩 tar -tzf backup.tar.gz # 查看压缩包内容 tar -czf backup-$(date+%Y%m%d).tar.gz /etc/ # 带日期的备份 # 其他压缩工具 zip -r backup.zip /var/www/ # 创建zip文件 unzip backup.zip # 解压zip文件 gzip file.txt # 压缩单个文件 gunzip file.txt.gz # 解压缩
6.2 数据同步
# rsync数据同步 rsync -avz /var/www/ user@remote:/backup/ # 同步到远程服务器 rsync -avz --delete /var/www/ /backup/ # 同步并删除目标多余文件 rsync -avz --exclude='*.log'/var/www/ /backup/ # 排除日志文件
七、系统安全与用户管理
7.1 用户管理
# 用户操作 useradd -m -s /bin/bash username # 创建用户 usermod -aGsudousername # 添加用户到sudo组 passwd username # 设置密码 userdel -r username # 删除用户及主目录 # 用户信息查看 idusername # 查看用户ID和组信息 who # 查看当前登录用户 w # 查看用户活动 last # 查看登录历史
7.2 系统安全
# 系统日志检查 tail-f /var/log/auth.log # 监控登录日志 grep"Failed password"/var/log/auth.log # 查找失败登录 grep"sudo"/var/log/auth.log # 查看sudo使用记录 # 文件完整性检查 md5sumfile.txt # 计算MD5值 sha256sumfile.txt # 计算SHA256值
八、高级命令技巧
8.1 命令组合与管道
# 复杂的命令组合 ps aux | grep nginx | grep -v grep | awk'{print $2}'| xargskill-9 # 查找nginx进程并终止 cat/var/log/nginx/access.log | grep"GET"| awk'{print $1}'|sort|uniq-c |sort-nr |head-10 # 统计GET请求最多的IP find /var/log -name"*.log"-execgrep -l"error"{} ; | xargsls-la # 查找包含error的日志文件并显示详细信息
8.2 脚本化运维
# 一键系统信息收集脚本 #!/bin/bash echo"=== 系统信息 ==="> system_info.txt uname-a >> system_info.txt echo"=== CPU信息 ===">> system_info.txt cat/proc/cpuinfo | grep"model name"|head-1 >> system_info.txt echo"=== 内存信息 ===">> system_info.txt free -h >> system_info.txt echo"=== 磁盘信息 ===">> system_info.txt df-h >> system_info.txt echo"=== 网络信息 ===">> system_info.txt ip addr show >> system_info.txt
九、面试常见问题解答
9.1 性能调优相关
Q: 如何查看系统负载?
uptime # 查看系统负载 cat/proc/loadavg # 详细负载信息 w # 查看负载和用户
Q: 如何排查CPU使用率过高?
top -p PID # 监控特定进程 strace -p PID # 跟踪系统调用 perf top # 性能分析工具
9.2 存储管理相关
Q: 如何找出占用空间最大的文件?
du-ah /var |sort-rh |head-20 find /var -typef -size +100M -execls-lh {} ;
Q: 如何监控文件系统使用情况?
df-h # 查看磁盘使用率 inotifywait -m /var/log/ # 监控文件变化
十、实战场景演练
10.1 服务器故障排查流程
# 1. 系统基本信息检查 uptime&& free -h &&df-h # 2. 进程状态检查 ps aux |head-20 top -n 1 |head-20 # 3. 网络状态检查 netstat -tulpn | grep LISTEN ss -tulpn # 4. 日志检查 tail-50 /var/log/messages journalctl -xe
10.2 日常维护脚本
#!/bin/bash # 系统健康检查脚本 LOG_FILE="/var/log/health_check.log" DATE=$(date'+%Y-%m-%d %H:%M:%S') echo"[$DATE] 开始系统健康检查">>$LOG_FILE # 检查磁盘使用率 DISK_USAGE=$(df-h | grep -E"8[0-9]%|9[0-9]%|100%") if[ ! -z"$DISK_USAGE"];then echo"[$DATE] 警告:磁盘使用率过高">>$LOG_FILE echo"$DISK_USAGE">>$LOG_FILE fi # 检查内存使用率 MEM_USAGE=$(free | grep Mem | awk'{print ($3/$2) * 100.0}') if(( $(echo "$MEM_USAGE>90" | bc -l) ));then echo"[$DATE] 警告:内存使用率过高:$MEM_USAGE%">>$LOG_FILE fi # 检查系统负载 LOAD_AVG=$(uptime| awk -F'load average:''{print $2}'|cut-d, -f1 |tr-d' ') if(( $(echo "$LOAD_AVG>2.0" | bc -l) ));then echo"[$DATE] 警告:系统负载过高:$LOAD_AVG">>$LOG_FILE fi echo"[$DATE] 系统健康检查完成">>$LOG_FILE
总结
掌握这些Linux命令不仅能帮助你在面试中脱颖而出,更重要的是能在实际工作中提高效率,快速定位和解决问题。记住,命令只是工具,真正的技能在于理解系统原理,能够根据实际情况灵活运用这些命令。
作为运维工程师,建议你:
1. 多动手实践,在测试环境中反复练习
2. 理解每个命令的工作原理,不只是记忆用法
3. 学会组合使用命令,提高工作效率
4. 关注系统安全,养成良好的运维习惯
5. 持续学习新的工具和技术
希望这篇文章能帮助你在Linux运维的道路上更进一步!
本文涵盖了运维工程师必须掌握的Linux命令技能,如果你觉得有用,欢迎分享给更多的运维同行!
-
Linux
+关注
关注
87文章
11522浏览量
214219 -
数据库
+关注
关注
7文章
3939浏览量
66535 -
文件
+关注
关注
1文章
585浏览量
25429 -
命令
+关注
关注
5文章
742浏览量
22936
原文标题:月薪2W+运维工程师都在用的Linux命令清单(建议收藏)
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
Linux find命令详解
介绍一些实用的Linux命令

评论