python使用标准库根据进程名如何获取进程的pid详解


Posted in Python onOctober 31, 2017

前言

标准库是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。特别是有时候需要获取进程的pid,但又无法使用第三方库的时候。下面话不多说了,来一起看看详细的介绍吧。

方法适用linux平台.

方法1

使用subprocess 的check_output函数执行pidof命令

from subprocess import check_output
def get_pid(name):
 return map(int,check_output(["pidof",name]).split())
 
In [21]: get_pid("chrome")
Out[21]:
[27698, 27678, 27665, 27649, 27540, 27530,]

方法2

使用pgrep命令,pgrep获取的结果与pidof获得的结果稍有不同.pgrep的进程id稍多几个.pgrep命令可以使适用subprocess的check_out函数执行

import subprocess<br data-filtered="filtered">def get_process_id(name):
 """Return process ids found by (partial) name or regex.
 
 >>> get_process_id('kthreadd')
 [2]
 >>> get_process_id('watchdog')
 [10, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61] # ymmv
 >>> get_process_id('non-existent process')
 []
 """
 child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)
 response = child.communicate()[0]
 return [int(pid) for pid in response.split()]

方法3

直接读取/proc目录下的文件.这个方法不需要启动一个shell,只需要读取/proc目录下的文件即可获取到进程信息.

#!/usr/bin/env python
 
import os
import sys
 
 
for dirname in os.listdir('/proc'):
 if dirname == 'curproc':
  continue
 
 try:
  with open('/proc/{}/cmdline'.format(dirname), mode='rb') as fd:
   content = fd.read().decode().split('\x00')
 except Exception:
  continue
 
 for i in sys.argv[1:]:
  if i in content[0]:
   print('{0:<12} : {1}'.format(dirname, ' '.join(content)))<br data-filtered="filtered"><br data-filtered="filtered">
phoemur ~/python $ ./pgrep.py bash
1487   : -bash 
1779   : /bin/bash

4,获取当前脚本的pid进程

import os
 
os.getpid()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python与php实现分割文件代码
Mar 06 Python
Python 对象中的数据类型
May 13 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
Python通用循环的构造方法实例分析
Dec 19 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
python3 字符串知识点学习笔记
Feb 08 Python
Python中的全局变量如何理解
Jun 04 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
python 实现的截屏工具
May 08 Python
Python列表删除的三种方法代码分享
Oct 31 #Python
Python文件的读写和异常代码示例
Oct 31 #Python
Python网络编程详解
Oct 31 #Python
Python中enumerate函数代码解析
Oct 31 #Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 #Python
python中requests库session对象的妙用详解
Oct 30 #Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 #Python
You might like
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
取键盘键位ASCII码的网页
2007/07/30 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
使用graphics.py实现2048小游戏
2015/03/10 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
2014学年自我鉴定
2014/02/23 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
任命书范本大全
2014/06/06 职场文书
家长给老师的感谢信
2015/01/20 职场文书
初中英语教学随笔
2015/08/15 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python