特定/専用PIDに対してのみプロセスを実行する

特定/専用PIDに対してのみプロセスを実行する

頻繁に実行したいACプログラム実行ファイルまたはシェルスクリプトがあります。何かを停止/一時停止または通知したい場合は、プロセスにシグナルを送信します。したがって、毎回プロセスを確認し、それを使用してシグナルを送信する必要がpidあります。kill

毎回pidをチェックし、システムがシャットダウンするまで覚えておく必要がありますが、本当に迷惑です。pidプロセスが特定のプラットフォームでのみ実行されることを望みます。init常に1に走るのと同じです。

関連C APIがありますか?また、bashプログラムスクリプトも必要です。

ベストアンサー1

PIDを維持または割り当てることができないと思います。ただし、次のスクリプトでプロセスを開始できます。

myprocess &
echo "$!" > /tmp/myprocess.pid

これは他の人が述べたように「pidファイル」を生成します。その後、たとえば$(</tmp/myprocess.pid)またはを使用してbashからインポートできます$(cat /tmp/myprocess.pid)

これを行うときは注意してください。プロセスが終了し、pidがリサイクルされると、誤った信号が送信されます。あなたは確認できます:

pid=$(cat /tmp/myprocess.pid)
if [ "$(ps -o comm= -p "$pid")" = "myprocess" ]; then
    ...send your signal...
else echo "Myprocess is dead!"
fi

"$(ps -o comm= -p "$pid")"変だと思われる方はコメントをご覧ください。誰かがコンテンツに対して疑わしい作業をしている可能性がある場合/tmp/myprocess.pid(他のユーザーがそのコンテンツに書き込んではいけません!)、より強力な検証を実行できます。

おすすめ記事