終了したいプロセスのPIDがありますが、-9を実行せずに正常に終了する機会を与えたいと思います。
予想される動作:PIDが最大10秒間実行され続けていることを確認し、kill -9を実行します。
1行でこれを行うことができればボーナスです。
ベストアンサー1
より良い方法(他のプロセスの同じPID終了を防ぐ)は次のとおりです。
function kill_gracefully() {
pid=$1; [[ -z $pid ]] && return; # check arg
kill $pid; # kill once
i=0;
while kill -0 $pid; do # while pid is alive
sleep 0.1;
((i+=1)); # count ++
if [[ $i -gt 10 ]];then # wait for 10 secs at most
kill -9 $pid; # kill if timeout
break;
fi;
done;
}
上記の方法は、負荷の高いシステム(頻繁にフォーク)で失敗する可能性があります。