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中的自定义函数学习笔记
Sep 23 Python
跟老齐学Python之数据类型总结
Sep 24 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
python连接mysql实例分享
Oct 09 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
pyQt5实时刷新界面的示例
Jun 25 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
python计算auc的方法
Sep 09 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 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&amp;MYSQL留言板源码
2020/07/19 PHP
php之字符串变相相减的代码
2007/03/19 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
服务之星获奖感言
2014/01/21 职场文书
人力资源作业细则
2014/03/03 职场文书
安全生产计划书
2014/05/04 职场文书
机械专业求职信范文
2014/07/15 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server