後で同じPIDを使用して作成されたプロセスではなく、同じプロセスを終了させるにはどのような情報が必要ですか?

後で同じPIDを使用して作成されたプロセスではなく、同じプロセスを終了させるにはどのような情報が必要ですか?

start.shスクリプトから始めてPIDを保存するためのいくつかのコマンドがあります。その後、stop.shユーザーに便利な時間に実行してブロックしたいと思います。

トラップに注意してください。

  1. 今日実行しましたが、start.shPIDがファイルに保存されました。150001500115002
  2. プロセスを停止するのを忘れました。 1週間後にコンピュータを再起動しました。
  3. これでスクリプトを実行します。 PIDを持つジョブを終了しようとし、stop.sh無意識のうちにファイルからそのジョブを読み取ります。 =>新しく再起動したシステムにこれらのPIDがある場合、これらの操作はスクリプトを介して開始されたものではなく、システムが不明なままになります。150001500115002
    start.sh

LinuxスクリプトでプロセスのPIDを初めてキャプチャするときに、$$後で同じPIDを使用して発生する可能性がある他の操作と混同しないように追加情報を収集するにはどうすればよいですか?

たとえば、PPIDを収集したり、開始日時を収集したり、ある種の「ユニバーサルユニーク性」を保証したりするなどのコンテンツを作成できます。

プロセス情報を収集する方法と混乱せずにプロセス情報を終了する方法は?

ベストアンサー1

プロセス情報を収集する方法と混乱せずにプロセス情報を終了する方法は?

知りません。

代わりに、後で再検索するために確実に参照できるコンテキスト内でプロセスが実行されていることを確認してください。

これ正しいこの問題を解決する方法は、ターゲットプラットフォームのサービス管理システム(現在は通常Linuxシステムでシステム化されています)を使用することです。彼らはほとんどの場合、仕事を正しく処理し、特にデザイン済みこれをやってください。

好みの高い順に、代替は次のとおりです。

  • 使うグループ具体的な名前をつけてください。このアプローチはLinuxにのみ適用されますが、安定して原子的にシャットダウンする機能など、多くの明白な利点があります。みんな起動したプロセスの子プロセスです。 PID が cgroup に関連付けられるのではなく、特定のプロセスが cgroup に明示的に関連付けられるため、これは本質的にライフサイクルの問題を解決します。
  • 監督システムを使用します。走るs6またはデーモンツール。これらのソリューションは、監視したいプロセスの親プロセスであり、簡単で信頼性の高いプロセスを活用して問題を解決します。
  • PIDファイルを/run必要な場所に置きます。システムの再起動時にPIDを再利用する際に指摘された問題は、既知の問題で確実に解決されました。数十年システムが再起動されるたびに消去されるディレクトリにPIDファイルを置くだけです。/runLinux システムの標準位置です。これはまだPIDの再利用の問題を表しています。 PID は関連プロセスの存続期間中に固有であるため、予期せず終了し、PID ファイルを残しているプロセスの 1 つで再利用の問題が発生する可能性があります。

おすすめ記事