1.抽取取本机IP地址
ip addr | grep 'BROADCAST' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d '/'
2.抽取cpu核心数
cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l
3.从tomcat的server.xml中抽取端口号
server.xml地址:serverPath=/opt/web/service/conf/server.xml
httpPort=$(cat "$serverPath" | grep 'Connector' | cut -d' ' -f6 | awk -F "[\"\"]" '{print $2}')
4.shell命令更新linux crontab内容
crontab -l > conf && echo "* * * * * hostname >> /tmp/tmp.txt" >> conf && crontab conf && rm -f conf
解释:以上命令先将当前crontab内容写入临时文件conf中,然后使用echo追加新cron表达式到conf内容中,然后再导入到crontab中,最后删除临时文件conf
5.删除服务器中三天前的日志
find /opt/web/*/logs/ -type f -mtime +3 -a \( -name '*.txt' -o -name '*.log' \) -exec rm {} \;
解释:先通过find命令搜索指定目录,然后通过mtime +3找到三天前的文件,进行文件后缀名匹配,最后执行删除操作
6.查看系统当前网络连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
7.查看堆内对象的分布 Top 50(定位内存泄漏)
jmap –histo:live $pid | sort-n -r -k2 | head-n 50
8.按照 CPU/内存的使用情况列出前10 的进程
内存
ps axo %mem,pid,euser,cmd | sort -nr | head -10
CPU
ps -aeo pcpu,user,pid,cmd | sort -nr | head -10
9.显示系统整体的 CPU利用率和闲置率
grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print "idle \t used\n" $5*100/total "% " $2*100/total "%"}'
10.按线程状态统计线程数(加强版)
jstack $pid | grep java.lang.Thread.State:|sort|uniq -c | awk '{sum+=$1; split($0,a,":");gsub(/^[ \t]+|[ \t]+$/, "", a[2]);printf "%s: %s\n", a[2], $1}; END {printf "TOTAL: %s",sum}';
11.按照 Swap 分区的使用情况列出前 10 的进程
for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | head -10
12.JVM 内存使用及垃圾回收状态统计
#显示最后一次或当前正在发生的垃圾收集的诱发原因
jstat -gccause $pid
#显示各个代的容量及使用情况
jstat -gccapacity $pid
#显示新生代容量及使用情况
jstat -gcnewcapacity $pid
#显示老年代容量
jstat -gcoldcapacity $pid
#显示垃圾收集信息(间隔1秒持续输出)
jstat -gcutil $pid 1000
13.快速杀死所有的 java 进程
ps aux | grep java | awk '{ print $2 }' | xargs kill -9
14.查找/目录下占用磁盘空间最大的top10文件
find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
15.在log.2020-01-09.bz2中搜索文本信息
bzgrep -i '20-01-09 16:40:' log.2020-01-09.bz2
网友评论