Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2802

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

$
0
0

沢山のシェルスクリプトが動く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"# topecho-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# pstreeecho-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の結果から、どのスクリプトに書かれているコマンドかをチェックができる。


Viewing all articles
Browse latest Browse all 2802

Trending Articles