Linux では、kill コマンドを使用して、pid に基づいてプロセスが存在するかどうかを確認できます。「kill -0」はプロセスにシグナルを送信しませんが、エラー チェックを実行します。プロセスが存在する場合は、 、返される結果は 0 です。プロセスが存在しない場合、返される結果は 1 で、構文は「kill -0 pid」です。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
プロセスが生きているかどうかを監視し、毎分確認したいとします。上記の方法を使用して、次のコマンドを実行する必要があります。 ps コマンドを実行し、1 分ごとに grep の通常の検索を実行します。このオーバーヘッドはサーバー上では何もないようですが、同じノード上の数十、数百のそのようなプロセスを同時に監視したい場合はどうすればよいでしょうか?したがって、パフォーマンスの観点からより良い方法をいくつか検討する必要があります。
デーモン プロセスの場合、通常、独自の pid ファイルまたはロック ファイルがあり、これらのファイルが存在するかどうかを確認して、プロセスが存在するかどうかを判断できます。しかし、異常な状況下では、pid ファイルが存在するプロセスが存在しないことがあります。したがって、プロセスの pid ファイルに依存してプロセスが生きているかどうかを検出することはできません。
信頼できる方法は、「kill -0 pid」を使用することです。kill -0 はプロセスにシグナルを送信しませんが、エラー チェックを実行します。このコマンドは、プロセスが存在する場合は 0 を返し、プロセスが存在しない場合は 1 を返します。
ただし、この方法は一般ユーザーが自分のプロセスを確認する場合にのみ使用できます。他のユーザーのプロセスにシグナルを送信すると、権限がないためエラーが発生し、 return 値も 1 です。
[sw@gentoo ~]$ kill 2993 -bash: kill: (2993) - Operation not permitted [sw@gentoo ~]$ echo $? 1 [sw@gentoo ~]$
もちろん、特権ユーザーを使用して kill コマンドを実行する場合、権限の問題は発生しません。
一方、カーネルは /proc 仮想ファイル システムを介してシステム内で実行されているプロセス情報をエクスポートすることがわかっています。各プロセスには /proc/
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がpidを使用してLinuxにプロセスが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。