私は非常に複雑なPythonアプリケーションを持っています。独自の初期化スクリプトがありますが、実行すると次のようになります。
sudo service my_service_daemon stop
「Stopping my_service_daemon [OK]」が印刷されますが、ジョブが完了するまで実際の子プロセスに残ります(信号15をキャプチャしますが、いくつかの操作を実行する必要があります)。したがって、子プロセスがまったくない場合にのみ「[OK]」メッセージを印刷したいと思います。これはinitスクリプトの一部です(CentOS 6で実行されています)。
...
. /etc/init.d/functions
...
stop(){
echo -n $"Stopping $prog: "
if [ -a $pidfile ]; then
group_id=$(ps -o pgid= $(cat $pidfile) | grep -o [0-9]*)
if [ ! -z $group_id ]; then
kill -- -$group_id
success
fi
else
failure
fi
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $lockfile $pidfile
}
ベストアンサー1
プロセス処理を使用するsystemd
か、cgroup
子動物園を手動で制御します。出力ファイルps(1)
とPIDファイルを操作すると、レースが簡単に発生する可能性があり、髪を引っ張って早期ハゲを引き起こすことが知られています。