GNU/Linux >> Linux の 問題 >  >> Linux

Linux プロセス管理用の Python ライブラリ

これは Linux サーバーであると言ったので、外部の ps を呼び出します バイナリは通常、/proc からの情報を使用するよりも遅く、より多くのリソースを使用し、エラーが発生しやすくなります。

誰も言及していないので、1 つの簡単な方法は次のとおりです。

glob.glob('/proc/[0-9]*/')

頑張ってください。


Python サブプロセスを開始/停止するには、subprocess モジュールを使用できます。それらが実行されているかどうかを確認するには、psutil を使用できます:

>>> import psutil
>>> pid = 1034  # some pid
>>> psutil.pid_exists(pid)
True
>>>

...またはこれ (PID が再利用されているかどうかも確認します):

>>> p = psutil.Process(pid)
>>> p.is_running()
True
>>>

これは私が使用するものです。これは procfs を使用します (そのため、Unix のようなシステムに限定され、Mac では動作しないと思います) と前述の glob を使用します。また、プロセスを識別するためのコマンドラインも取得します。プロセスを強制終了するには、 os.kill(signal.SIGTERM, pid) を使用できます .サブプロセスを使用するには、この投稿を確認してください Python, Popen and select - waiting for a process to terminate or a timeout

def list_processes():
    """
    This function will return an iterator with the process pid/cmdline tuple

    :return: pid, cmdline tuple via iterator
    :rtype: iterator

    >>> for procs in list_processes():
    >>>     print procs
    ('5593', '/usr/lib/mozilla/kmozillahelper')
    ('6353', 'pickup -l -t fifo -u')
    ('6640', 'kdeinit4: konsole [kdeinit]')
    ('6643', '/bin/bash')
    ('7451', '/usr/bin/python /usr/bin/ipython')
    """
    for pid_path in glob.glob('/proc/[0-9]*/'):

        # cmdline represents the command whith which the process was started
        f = open("%s/cmdline" % pid_path)
        pid = pid_path.split("/")[2] # get the PID
        # we replace the \x00 to spaces to make a prettier output from kernel
        cmdline = f.read().replace("\x00", " ").rstrip()
        f.close()

        yield (pid, cmdline)

実行中のプロセスのリストは、/proc ディレクトリの内容を調べることで確認できます (「ps」などのコア ユーティリティを使用しても)。

そのため、実行中のプロセスを照会するために関心のあるライブラリは、他のファイルやディレクトリを操作するために使用されるものと同じです (つまり、sys または os 、あなたが求めているフレーバーに応じて。 os.path に特に注意してください ただし、それはあなたが求めていることのほとんどを行います)。プロセスを終了するか、その他の方法で対話するには、プロセスにシグナルを送信します。これは os.kill で実行されます .最後に、os.popen を使用して新しいプロセスを開始します


Linux
  1. Linuxパッケージ管理のためのAppImageの使用

  2. 効果的なプロセス管理のための8つのLinuxコマンド

  3. Linuxでプロセスを強制終了するための10以上の例

  1. Linux で特定のプロセスのオープン FD 制限を確認する

  2. Linux で特定のプログラムのプロセス ID を設定する方法

  3. Linuxのプロセスモニターに相当しますか?

  1. Linux用のPythonアプリケーションをパッケージ化する方法

  2. システム管理者向けの30のLinuxプロセス演習

  3. Linux –単一のLinuxプロセスのメモリ使用量を制限しますか?