在Linux运维工作中,掌握一些常用的命令是必不可少的。这些命令可以帮助我们高效地管理服务器、监控系统性能、排查故障等。以下是对这些命令的归类整理,希望能为Linux运维人员提供一些帮助。
一、文件管理类
删除0字节文件
find -type f -size 0 -exec rm -rf {} \;
该命令用于查找并删除所有大小为0字节的文件,有助于清理系统中无用的文件,节省磁盘空间。
取IP地址
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'| cut -c 6-
或者
ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
这两个命令都可以获取指定网卡(如eth0)的IP地址,方便在需要时快速查看服务器的IP配置。
二、进程管理类
查看进程按内存从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
通过该命令可以查看系统中所有进程,并按照内存占用量从大到小进行排序,便于发现占用内存较多的进程,进而进行相应的优化或处理。
按CPU利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr
与查看内存占用类似,这个命令用于查看进程按CPU利用率排序的情况,有助于分析系统CPU的使用情况,找出可能的性能瓶颈。
杀掉MySQL进程
ps aux |grep mysql |grep -v grep |awk '{print $2}' |xargs kill -9
或者
killall -TERM mysqld
当需要停止MySQL服务时,可以使用这两个命令来杀掉MySQL进程。第一个命令通过组合多个命令来查找并杀掉MySQL进程,第二个命令则更为直接。
三、系统性能监控类
查看http的并发请求数及其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
该命令用于统计HTTP服务的并发请求数以及TCP连接的各种状态,对于分析Web服务器的性能和连接情况非常有帮助。
查看Apache的并发请求数及其TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
与查看HTTP服务类似,这个命令用于Apache服务器,通过统计TCP连接状态来了解Apache的并发处理情况。
CPU负载
cat /proc/loadavg
查看系统前三个输出值是否超过了系统逻辑CPU的4倍,可以初步判断CPU负载情况。
内存空间
free
通过该命令可以查看系统的内存使用情况,包括总内存、已用内存、空闲内存等信息,有助于判断系统是否存在内存不足的问题。
磁盘空间
df -h
用于查看各分区的磁盘使用率,如果发现某个分区使用率过高,可以进一步使用以下命令找出占用空间最多的文件或目录:
du -cks * | sort -rn | head -n 10
磁盘I/O负载
iostat -x 1 2
检查I/O使用率(%util)是否超过100%,从而判断磁盘是否存在I/O瓶颈。
网络负载
sar -n DEV
通过该命令可以查看网络流量(rxbyt/s, txbyt/s)是否过高,进而分析网络的负载情况。
四、系统配置与服务管理类
显示运行3级别开启的服务
ls /etc/rc3.d/S* |cut -c 15-
该命令用于列出在运行级别3下自动启动的服务,有助于了解系统的启动配置。
在编写SHELL显示多个信息,用EOF
cat << EOF
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF
使用EOF可以方便地在Shell脚本中输出多行文本信息,增强脚本的可读性和交互性。
查看系统自启动的服务
chkconfig --list | awk '{if ($5=="3:on") print $1}'
用于查看在运行级别3下设置为开机自启动的服务,方便对系统服务的启动情况进行管理和调整。
五、网络管理类
网络状态,检查DNS,网关等是否可以正常连通 可以使用
ping
命令来检查网络连通性,例如:
ping -c 4 www.example.com
通过ping指定的域名或IP地址,可以判断网络是否正常,DNS解析是否正确,网关是否可达等。
网络连接数目
netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
该命令用于统计当前系统中TCP连接的数量和状态分布,有助于分析网络连接的活跃程度和可能存在的异常连接。
六、日志管理类
系统日志
cat /var/log/rflogview/*errors
或者
grep -i error /var/log/messages
grep -i fail /var/log/messages
通过查看系统日志文件,可以搜索包含“error”、“fail”等关键字的记录,快速定位系统运行中出现的错误和故障。
核心日志
dmesg
查看内核相关的日志信息,对于排查硬件故障、驱动问题等非常有帮助。
日志分析
logwatch –print
配置
/etc/log.d/logwatch.conf
,将Mailto
设置为自己的email地址,并启动邮件服务,可以定期接收日志报告,方便对系统日志进行集中分析和管理。
七、其他实用命令
杀掉80端口相关的进程
lsof -i :80|grep -v “ID”|awk ‘{print “kill -9”,$2}’|sh
当需要停止占用80端口的进程时,可以使用该命令快速查找并杀掉相关进程。
清除僵死进程
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
用于清除系统中处于僵死状态的进程,避免这些进程占用系统资源。
tcpdump抓包
tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
当需要对网络流量进行抓包分析时,可以使用tcpdump命令,例如抓取目的端口为80的TCP数据包,保存到文件中,便于后续分析。
查看有多少个活动的php-cgi进程
netstat -anp | grep php-cgi | grep ^tcp | wc -l
对于使用php-cgi的Web服务器,通过该命令可以查看当前活动的php-cgi进程数量,有助于了解PHP服务的运行状态。
总结
以上就是一些Linux运维中常用的命令,它们涵盖了文件管理、进程管理、系统性能监控、系统配置与服务管理、网络管理以及日志管理等多个方面。熟练掌握这些命令,可以大大提高运维工作的效率和质量。在实际工作中,我们还需要根据具体的场景和需求,灵活运用这些命令,不断总结经验,提升自己的运维能力。
评论区