[英]How to get PID by command line in python (windows)?
使用psutil.Process(PID)
,我可以獲得命令行。
喜歡,
>>> import psutil
>>> p = psutil.Process(4510)
>>> p.cmdline()
['python', 'manage.py', 'runserver', '8081']
但是,我想知道給定命令行的PID。
喜歡,
>>> cmd = "python manage.py runserver 8081"
>>> p = psutil.some_method_which_takes_command_line(cmd)
>>> p.pid()
4510
如何實現呢?
注意:
我要從中實現的目標是每天晚上晚上重新啟動django服務器。 為此,我計划通過命令行獲取正在運行的django服務器的PID並在晚上將其殺死。 之后,我將再次運行相同的命令cmd
以啟動服務器。
您可能正在尋找:
import time # only here for sleep, you don't need it
import subprocess
cmd = ['python', 'manage.py', 'runserver', '8081']
p = subprocess.Popen(cmd)
# something happens for a while here
time.sleep(1)
p.terminate()
# or p.kill() if you're on Linux and want to kill, not terminate the process
這個問題專門詢問有關從過程中獲取PID的問題,但是也可以這樣做:
import subprocess
cmd = ['python', 'manage.py', 'runserver', '8081']
p = subprocess.Popen(cmd)
pid = p.pid
不過,在獲取PID並在稍后重新使用它以殺死進程時要小心,通常有更好的方法來擺脫需要刪除或重新啟動的進程。
請注意,如果您使用shell=True
啟動進程,則PID將是Shell進程的PID,而不是在Shell中啟動的程序。 請參閱此處的文檔https://docs.python.org/3.7/library/subprocess.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.