例えば30分以上経っても処理が終わらないhttpdプロセスをkillする方法。親プロセスはroot権限でしょうから、grep -v rootで除外しておきます。このシェルスクリプトをrootで定期実行すればok
for i in `ps aux | grep httpd | grep -v root | gawk '{print $2 "_" $10}' | sed 's/://'` do PROCCESSNUM=`echo $i | cut -f1 -d'_'`; TIMENUM=`echo $i | cut -f2 -d'_'`; if [ $TIMENUM -gt 30 ]; then kill $PROCCESSNUM; echo "kill $PROCCESSNUM at "`date`; fi done
最初のfor文で 12345_023のようにプロセス番号_処理時間という文字列を取得(プロセス番号 処理時間というように空白区切りにするとfor文が空白で分割して回してしまうのであえてアンダーバーで区切りました)
次にcutコマンドでアンダーバーの左側と右側を取得。最後に継続時間が30分より大きいかチェックして、trueならkillコマンド発動という流れ。