python代码获取linux进程pid

python代码获取linux进程pid

在某些需求中,我们需要根据某些条件动态的执行或者停止某程序(linux环境下),对于动态执行,一般没有什么难度。

开始某程序:需要知道程序的路径,以及对应的.py文件

os.system(‘cd {} && python {}’.format(file_path,a.py))

上面就是表明执行a.py文件

动态停止某程序。

上网搜索好久,一般推荐的方法都是安装 psutil,

import  psutil;
for proc in psutil.process_iter():
    print("pid-%d,name:%s" % (proc.pid,proc.name()))
#执行结果
pid-1,name:systemd
pid-2,name:kthreadd
pid-3,name:ksoftirqd/0
pid-5,name:kworker/0:0H
pid-6,name:kworker/u12:0
pid-7,name:rcu_sched
pid-8,name:rcu_bh
pid-9,name:migration/0
pid-10,name:watchdog/0
pid-11,name:watchdog/1
pid-12,name:migration/1
pid-13,name:ksoftirqd/1
pid-15,name:kworker/1:0H
pid-16,name:watchdog/2
pid-17,name:migration/2
pid-18,name:ksoftirqd/2
pid-20,name:kworker/2:0H
pid-21,name:watchdog/3
pid-22,name:migration/3
pid-23,name:ksoftirqd/3
pid-25,name:kworker/3:0H
pid-26,name:watchdog/4
pid-27,name:migration/4

但在实际操作中发现,此种方法并不能解决想要获取pid的问题。因为其后面显示的信息并不精确。比如我们python执行两个.py文件,则结果中的name:python,会出现两个,这样我们如何能获得pid?

实际:

import os
pid=os.popen('ps -ef | grep  main.py ').readlines()[0].split()[1]
#此处的popen会把命令的输出作为返回值,我们再采用读文件的形式再根据实际情况进行分割,取其下标即可
#此处补充os.system(cmd) 返回值只会有0(成功),1,2
print(pid)
#执行结果
19212
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值