Python環境でunix "jobs"コマンドを使用して、現在実行中のバックグラウンドプロセスを知りたいです。
使ってみよう
import os
os.system('jobs')
しかし、これは私には効果がありません。
答え1
jobs
コマンドではなく、シェル組み込みコマンドです。fg
その他のシェル組み込み機能とともに、bg
シェルサブプロセスとして実行されるすべての「タスク」を管理するために使用されます。これをリスト、停止、フォアグラウンドに配置するなど... したがって、シェルコンテキスト内にはありません。その職業が属するところしか意味がありません。
Pythonの同等の概念は、次のものを使用することです。サブプロセス基準寸法。このモジュールを使用すると、子プロセスを開始、終了、待機できます。たとえば、Python配列を使用して複数の子プロセスを作成し、すべての呼び出しの戻り値をPython配列に保存する場合、subprocess.Popen
配列の内容はシェルの出力subprocess.Popen
と同じです。jobs
答え2
タスクはシェルの内部概念です。アクションは、実際に開始されたサブプロセスを記憶するシェルです。シェルの外では、シェルのタスクリストを操作できません。
このようにしてプロセスを操作できます。プロセスが与えられたシェルの操作であるかどうかを確認することは不可能であり、推測だけが可能です。親IDがシェルPIDのプロセスを一覧表示できます。プロセスグループリーダーであり、シェルと同じ端末で実行されているプロセスを一覧表示できます。バラよりこのスタックオーバーフローの質問Pythonでプロセス情報を取得するいくつかの方法を学びます。
Pythonスクリプトでタスクを制御する必要がある場合は、可能であれば実際にPythonスクリプトでプロセスを起動して管理する必要があります。必要なすべてがそこにありますsubprocess
基準寸法。