ホームページ  >  記事  >  運用・保守  >  pidを使用してLinuxにプロセスが存在するかどうかを確認する方法

pidを使用してLinuxにプロセスが存在するかどうかを確認する方法

WBOY
WBOYオリジナル
2022-04-07 12:37:416799ブラウズ

Linux では、kill コマンドを使用して、pid に基づいてプロセスが存在するかどうかを確認できます。「kill -0」はプロセスにシグナルを送信しませんが、エラー チェックを実行します。プロセスが存在する場合は、 、返される結果は 0 です。プロセスが存在しない場合、返される結果は 1 で、構文は「kill -0 pid」です。

pidを使用してLinuxにプロセスが存在するかどうかを確認する方法

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux で pid を使用してプロセスが存在するかどうかを確認する方法

プロセスが生きているかどうかを監視し、毎分確認したいとします。上記の方法を使用して、次のコマンドを実行する必要があります。 ps コマンドを実行し、1 分ごとに grep の通常の検索を実行します。このオーバーヘッドはサーバー上では何もないようですが、同じノード上の数十、数百のそのようなプロセスを同時に監視したい場合はどうすればよいでしょうか?したがって、パフォーマンスの観点からより良い方法をいくつか検討する必要があります。

デーモン プロセスの場合、通常、独自の pid ファイルまたはロック ファイルがあり、これらのファイルが存在するかどうかを確認して、プロセスが存在するかどうかを判断できます。しかし、異常な状況下では、pid ファイルが存在するプロセスが存在しないことがあります。したがって、プロセスの pid ファイルに依存してプロセスが生きているかどうかを検出することはできません。

信頼できる方法は、「kill -0 pid」を使用することです。kill -0 はプロセスにシグナルを送信しませんが、エラー チェックを実行します。このコマンドは、プロセスが存在する場合は 0 を返し、プロセスが存在しない場合は 1 を返します。

pidを使用してLinuxにプロセスが存在するかどうかを確認する方法

ただし、この方法は一般ユーザーが自分のプロセスを確認する場合にのみ使用できます。他のユーザーのプロセスにシグナルを送信すると、権限がないためエラーが発生し、 return 値も 1 です。

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
1
[sw@gentoo ~]$

もちろん、特権ユーザーを使用して kill コマンドを実行する場合、権限の問題は発生しません。

一方、カーネルは /proc 仮想ファイル システムを介してシステム内で実行されているプロセス情報をエクスポートすることがわかっています。各プロセスには /proc/ ディレクトリがあります。したがって、プロセスの存在の検出を /proc/ ディレクトリの存在の検出に変換することができ、これははるかに簡単です。

関連する推奨事項: 「Linux ビデオ チュートリアル

以上がpidを使用してLinuxにプロセスが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。