簡體   English   中英

如何在python(Windows)中通過命令行獲取PID?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM