Anu*_*yal 7 python linux subprocess process
如何获取当前进程父进程的进程ID?
一般来说,给定一个进程ID如何获取其父进程ID?
例如,os.getpid()可用于获取proccess id,而os.getppid()可用于父级,如何获得祖父母,
我的目标是linux(ubuntu),所以平台特定的答案是可以的.
Gia*_*olà 22
通过使用psutil(https://github.com/giampaolo/psutil):
>>> import psutil
>>> psutil.Process().ppid()
2335
>>> psutil.Process().parent()
<psutil.Process (pid=2335, name='bash', cmdline='bash') at 140052120886608>
>>>
Run Code Online (Sandbox Code Playgroud)
linux具体:
os.popen("ps -p %d -oppid=" % os.getppid()).read().strip()
Run Code Online (Sandbox Code Playgroud)
我认为你不能以可移植的 Python 方式做到这一点。但有两种可能性。
ps命令中获取,因此您可以对其进行分析。proc文件系统,则可以打开该文件/proc/<pid>/status并搜索包含 的行PPid:,然后对该 PID 执行相同的操作。例如,以下脚本将获取您的 PID、PPID 和 PPPID,只要权限允许:
#!/bin/bash
pid=$$
ppid=$(grep PPid: /proc/${pid}/status | awk '{print $2'})
pppid=$(grep PPid: /proc/${ppid}/status | awk '{print $2'})
echo ${pid} ${ppid} ${pppid}
ps -f -p "${pid},${ppid},${pppid}"
Run Code Online (Sandbox Code Playgroud)
产生:
3269 3160 3142
UID PID PPID C STIME TTY TIME CMD
pax 3142 2786 0 18:24 pts/1 00:00:00 bash
root 3160 3142 0 18:24 pts/1 00:00:00 bash
root 3269 3160 0 18:34 pts/1 00:00:00 /bin/bash ./getem.sh
Run Code Online (Sandbox Code Playgroud)
显然,您必须使用 Python 打开这些文件。
| 归档时间: |
|
| 查看次数: |
12250 次 |
| 最近记录: |