すべての子プロセスが停止した場合にのみ、initスクリプトに「OK」を印刷させるにはどうすればよいですか?

すべての子プロセスが停止した場合にのみ、initスクリプトに「OK」を印刷させるにはどうすればよいですか?

私は非常に複雑な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ファイルを操作すると、レースが簡単に発生する可能性があり、髪を引っ張って早期ハゲを引き起こすことが知られています。

おすすめ記事