PR

Linux プロセス情報を時間表示付きでログ出力する方法

スポンサーリンク
Linux

トラブル発生時等に、プロセスのメモリ使用量やCPU専有度など、その時のプロセス状態を知りたい場面はあると思います。

標準のpsコマンドでは取得時間が表示されないので、ログにタイムスタンプを付与したプロセス状態取得コマンドを紹介します。

取得するコマンド

ps aux コマンドを使用します。

プロセス情報を取得するシェルを作成

[hoge@hogelinux ~]# vi /home/hoge/ps_logging.sh
ps aux |awk '{print strftime("%Y/%m/%d %H:%M:%S"), $0}'

1分おきに出力されるようにcronに登録

cronで1分毎にログを出力(追記)します。

[hoge@hogelinux ~]# crontab -e
* * * * * /bin/bash  /home/hoge/ps_logging.sh >> /home/hoge/ps_logging.log

ログの確認

プロセス名やPIDでgrepする事により、1分単位でのそれぞれプロセスの各値を確認する事ができます。

[hoge@hogelinux ~]$ grep chrony /home/hoge/ps_logging.log
2019/12/23 07:52:01 chrony     953  0.0  0.0 117816  3264 ?        S    07:28   0:00 /usr/sbin/chronyd
2019/12/23 07:53:01 chrony     953  0.0  0.0 117816  3264 ?        S    07:28   0:00 /usr/sbin/chronyd
2019/12/23 07:54:01 chrony     953  0.0  0.0 117816  3264 ?        S    07:28   0:00 /usr/sbin/chronyd
2019/12/23 07:55:01 chrony     953  0.0  0.0 117816  3264 ?        S    07:28   0:00 /usr/sbin/chronyd

補足

ヘッダー(psコマンドの各値)はこんな感じです。

[hoge@hogelinux ~]$ head -1 /home/hoge/ps_logging.log
2019/12/23 07:52:01 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND