【发布时间】:2020-09-04 08:56:42
【问题描述】:
朋友:
我在 Linux 中运行一个脚本:
我可以使用ps命令获取进程。
ps -ef | grep "python test09.py&"
但是,我如何使用python代码通过给定关键字python test09.py&知道运行脚本的pid?
EDIT-01
我的意思是,我想用python脚本找到运行脚本python test09.py&的pid。
EDIT-02
当我运行 anali 的方法时,我会得到这个错误:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psutil/_psosx.py", line 363, in catch_zombie
yield
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psutil/_psosx.py", line 429, in cmdline
return cext.proc_cmdline(self.pid)
ProcessLookupError: [Errno 3] No such process (originated from sysctl)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test11.py", line 29, in <module>
print(get_pids_by_script_name('test09.py'))
File "test11.py", line 15, in get_pids_by_script_name
cmdline = proc.cmdline()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psutil/__init__.py", line 694, in cmdline
return self._proc.cmdline()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psutil/_psosx.py", line 342, in wrapper
return fun(self, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psutil/_psosx.py", line 429, in cmdline
return cext.proc_cmdline(self.pid)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/contextlib.py", line 77, in __exit__
self.gen.throw(type, value, traceback)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psutil/_psosx.py", line 376, in catch_zombie
raise AccessDenied(proc.pid, proc._name)
psutil.AccessDenied: psutil.AccessDenied (pid=1)
【问题讨论】:
-
请您澄清一下您要在这里做什么。您是想找出 same python 进程中的 pid(只需使用
os.getpid())还是试图找出 another python 进程的 pid命令行?如果是第二个选项,那么它始终是 您的 进程之一,还是由另一个用户运行的进程? -
我要查找运行脚本的pid。比如我可以使用
ps -ef | grep xxx