プロセスを記録する

サーバトラブルを調査するとき、sarコマンドを使えば過去のサーバリソース使用状況を確認することはできますが、そのときどのようなプロセスが動いていたかということまでは確認することはできません。

過去に動作していたプロセスを記録しておく必要があるときには、psコマンドの結果を定期的にファイルに出力するようなスクリプトをcronに設定しています。

#!/bin/sh

LOGDIR=/home/hogehoge/ps/
CPULOG=${LOGDIR}`date +%d`_cpu.log
MEMLOG=${LOGDIR}`date +%d`_mem.log

[ ! -e ${LOGDIR} ] && mkdir -p ${LOGDIR}

date >> ${CPULOG}
ps --no-header -e aux | sort -r -k 3 | head -n 30 >> ${CPULOG}
echo "\n" >>  ${CPULOG}

date >> ${MEMLOG}
ps --no-header -e aux | sort -r -k 4 | head -n 30 >> ${MEMLOG}
echo "\n" >>  ${MEMLOG}

上のスクリプトだと、稼働プロセスのうちcpu使用率、メモリ使用率の高い順上位30件がそれぞれのログファイルに記録されることになります。