あるプロセスが長期間放置しているとOutOfMemoryで死ぬので、OutOfMemoryで死ぬ前にkillして起動しなおすと言う事をやりたい。
あるプロセスはそこそこな数の子・孫プロセスを作るので、子プロセスを全部辿ってkillしたい。
ただし、実行元の親プロセスは残す。
cronはなんとなく使わない。kill後の生死は問わない。
#!/bin/bash 色々やる & # 時が来るまで待つ sleep 86400 # 再帰的に子を辿る function rpgrep(){ local ppid=$1; for pid in $(pgrep -P $ppid); do echo $pid rpgrep $pid; done } # $$=自身のPID kill $(rpgrep $$) # 自分自身を起動するコマンドとか。 exec "$@" とか exec bash test.sh
しばらく運用してみる。