1

root が所有する特定のプロセス (これもプログラムの一部ですが、デーモンとして実行されている) が存在するかどうかを知る必要があるプログラムがあります。プロセスはpkexec、プログラム自体を通常のユーザーとして実行できるように、を使用してプログラム内から開始されます。

通常、プロセスが実行されているかどうかを知る必要がある場合はos.kill(pid, 0)、結果の例外を使用してキャッチします。残念ながら、この場合、OSError: [Errno 1] Operation not permittedプロセスが存在するかどうかに関係なく、Python は単純に を吐き出します。

の出力を手動で解析する以外に、psutils のような外部ライブラリに頼らずにps aux | grep myprogramプロセスが存在するかどうかを知る簡単な方法はありますか? psutils は、このような単純なタスクに追加するには非常に大きな依存関係のようです。

4

2 に答える 2

0

使用できるpidがわかっている場合psutil

if psutil.Process(the_pid).is_running():
    print('Process is running')
else:
    print('Process is *not* running')

ボーナス ポイント: これは 2.4 から 3.3 までの python と、Linux、OS X、Windows、FreeBSD、Sun Solaris などで動作します。

存在するかどうかのチェック/proc/the-pidは、Windows ではなく *nix マシンでのみ機能します。

また、単にチェックするだけでは、プロセスが実行中であると結論付けること/proc/the-pidできません。OS は pid を自由に再利用できるため、プロセスが終了し、別のプロセスが同じ pid で生成された場合、問題が発生します。

また、元のプロセスの作成時間をどこかに保存する必要があります。次に、プロセスが存在するかどうかを確認するには、最初/proc/the-pidに確認してから、そのプロセスの作成時間が保存したものと一致することを確認する必要があります。psutilこれを自動的に行います。

于 2013-10-24T18:04:14.953 に答える