3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxの調査用にtop、ps、pstreeのログを吐く

Posted at

沢山のシェルスクリプトが動くLinuxサーバで、
動作が遅くなったから調査してくれ、と言われることがちょこちょこある。

その時、sarコマンドなどでメモリ、CPU使用率は後で測れるけど、
どのスクリプトのどんなコマンドがボトルネックになっているのかがよくわからなかったので、
top, ps, pstreeを定期的に吐くようにスクリプトを組んでみる。

スクリプト

toppslog.sh

# !/bin/sh

# Logファイル作成
LOG_TIME=`date '+%Y%m%d_%H%M%S'`
LOG_DATE=`date '+%Y%m%d'`
mkdir -p /topps/${LOG_DATE}
LOG_FILE="/topps/${LOG_DATE}/tp${LOGTIME}_${LOG_TIME}.log"

# top
echo -e "top cmd: ${LOG_TIME} \n****************" >> $LOG_FILE
top -n 1 -bc >> $LOG_FILE

# ps 
echo -e "ps cmd: ${LOG_TIME} \n*****************" >> $LOG_FILE
# CPU使用率順に並べる
ps auwx | LANG=C sort -k3,3  >> $LOG_FILE
                                                                                        
# pstree
echo -e "pstree cmd: ${LOG_TIME} \n*****************" >> $LOG_FILE
pstree -all -p  >> $LOG_FILE

cron登録

$ crontab -l | grep top
*/10 * * * * /toppslog.sh

とりあえず10分毎にログ取得。

結果

tp_20191120_122001.log
top cmd: 20191120_122001
****************
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1254 user     20   0  110m  968  876 R 99.9  0.0   0:02.61 awk $3=="002" && $4
 1282 user     20   0  110m  976  888 R 99.9  0.0   0:02.23 awk $3=="002" && $4

~中略~


pstree cmd: 20191120_122001
*****************
init,1
  |- HOGEHOGE.sh
  |   `-awk,1254 $3=="002" && $4=="51"

topで、どんなコマンドがCPU率、メモリ使用しているかチェック。
そのPIDを元に検索して、pstreeの結果から、どのスクリプトに書かれているコマンドかをチェックができる。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?