トラブル発生時等に、プロセスのメモリ使用量や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