如何找出系统中 load 高时处于运行队列的进程

  1. #!/bin/bash
  2. LANG=C
  3. PATH=/sbin:/usr/sbin:/bin:/usr/bin
  4. interval=1
  5. length=86400
  6. for i in $(seq 1 $(expr ${length} / ${interval}));do
  7. date
  8. LANG=C ps -eTo stat,pid,tid,ppid,comm --no-header | sed -e 's/^ \*//' | perl -nE 'chomp;say if (m!^\S*[RD]+\S*!)'
  9. date
  10. cat /proc/loadavg
  11. echo -e "\n"
  12. sleep ${interval}
  13. done

查 CPU 使用率比较高的线程

#!/bin/bash 
LANG=C 
PATH=/sbin:/usr/sbin:/bin:/usr/bin
interval=1 
length=86400 
for i in $(seq 1 $(expr ${length} / ${interval}));do 
date 
LANG=C 
ps -eT -o%cpu,pid,tid,ppid,comm | grep -v CPU | sort -n -r | head -20 date LANG=C cat /proc/loadavg { LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v CPU | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo '0'; } | bc -l 
sleep ${interval} 
done 
fuser -k $0