ホームページ > 運用・保守 > Linuxの運用と保守 > Linuxはプロセスが存在するかどうかを検出します

Linuxはプロセスが存在するかどうかを検出します

(*-*)浩
リリース: 2019-11-04 10:17:33
オリジナル
3167 人が閲覧しました

Linuxはプロセスが存在するかどうかを検出します

Linux 上にプロセスが存在するかどうかの検出 (推奨される学習: Linux の運用と保守)

この問題は次のように考えられます。非常に簡単です。"ps -ef | grep xx"そのまま実行してください。もちろんこれも可能ですが、パフォーマンスを考慮すると、これは良い考えではないかもしれません。

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

したがって、パフォーマンスの観点からより良い方法をいくつか検討する必要があります。

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

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

[sw@gentoo ~]$ ps
  PID TTY          TIME CMD
pts/0    00:00:00 bash
pts/0    00:00:00 ps
[sw@gentoo ~]$ kill -0 15091
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$ kill -0 15092
-bash: kill: (15092) - No such process
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$
ログイン後にコピー

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

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
1
[sw@gentoo ~]$
ログイン後にコピー

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート