UbuntuでPythonを使用してどのように行うことができますか?
psutil
はあなたが望むかもしれないもののようです。
質問で不明確なのは、実行可能ファイル名とウィンドウタイトルのどちらが必要かということです。ただし、実行可能プロセスの名前の後にいる場合は、psutil
およびその他の関数を使用して実行できます。
まず、psutil
をpip
(Python 2)またはpip3
(Python 3)と一緒にインストールします。コマンドが見つからない場合は、使用しているPythonバージョンに応じてpython-pip
またはpython3-pip
パッケージをインストールします。
# Python 2
Sudo pip install psutil
# Python 3
Sudo pip3 install psutil
次に、任意のPythonスクリプトでpsutil
を使用し、PIDを渡すことができます。これは、コマンドラインでpython3
を実行し、インタラクティブなPython 3シェルを操作し、Pythonコードを使用してそのプロセスの情報を取得することにより、できることの例です。 Pythonシェルのすぐ上:
>>> import psutil
>>> import os
>>> os.getpid()
6284
>>> p = psutil.Process(os.getpid())
>>> p.name()
'python3'
>>> p.exe()
'/usr/bin/python3.5'
>>> p.cmdline()
['python3']
>>>
ご覧のとおり、これらのユーティリティを使用すると、WindowsまたはLinuxの両方でプロセスに関するさまざまな情報をシステムから取得できますが、Pythonパッケージを最初にインストールする必要があります。
EDIT
また、これを Jacob Vlijm の回答で連鎖させて、PIDを取得してpsutil
に渡すこともできます(インポートでは 'subprocess'を 'sp'に短縮し、しかし、それはまだsubprocess
モジュールです):
import psutil
import subprocess as sp
p = psutil.Process(int(sp.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()))
...その後、引き続きpsutil
を使用して特定のデータを抽出します。
import subprocess
pid = subprocess.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()
print(pid)
ただし、xdotool
をインストールする必要があります。
Sudo apt install xdotool
Pidを超えることもできます。
#!/usr/bin/env python3
import subprocess
w_id = subprocess.check_output(["xdotool", "getactivewindow"]).decode("utf-8")
name = subprocess.check_output(["xprop", "-id", w_id, "WM_CLASS"]).decode("utf-8").strip()
print(name)
ただし、WM_CLASSが頻繁に行われることはありますが、常にプロセスであるとは限らないことに注意してくださいname。
import wnck
screen = wnck.screen_get_default()
window = screen.get_active_window()
pid = window.get_pid()