应用场景

在进行 Linux 运维的环境中,我们经常会遇到维护同一台服务器上的多个程序,涉及到程序的启动、关闭和重启操作。

通常这些程序之间存在着相互依存的关系需要进行依次的启动关闭操作。

下面介绍几种通过进程名获取进程PID的方法:

方法一:

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

from subprocess import check_output
def get_pid(name):
return map(int,check_output(["pidof",name]).split())

方法2:

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

import subprocess
def get_process_id(name):
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)))

方法4:

获取当前脚本的进程pid

import os

os.getpid()

最新文章

  1. Android之debug---menu的getActionView()return null
  2. Python ValueError: IO operation on closed file
  3. S3C2440 LCD驱动(FrameBuffer)实例开发&lt;一&gt;(转)
  4. 【SQL】MySQL学习笔记1-----子查询
  5. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
  6. 《JavaScript高级程序设计》读书笔记
  7. zabbix 通过gateway 获取远程主机的JMX信息
  8. 我也来说说C#中的异步:async/await
  9. Arduino 数码管LED驱动器 阵列方法
  10. Canal使用小结
  11. 2019-04-15 Python之利用matplotlib和numpy的简单绘图
  12. SSE图像算法优化系列一:一段BGR2Y的SIMD代码解析。
  13. 关于使用rem单位、css函数calc()进行自适应布局
  14. 浅析JSONP
  15. 009-spring cloud gateway-过滤器GatewayFilter、GlobalFilter、GatewayFilterChain、作用、生命周期、GatewayFilterFactory内置过滤器
  16. 7.9 Models -- Connection to An HTTP Server
  17. HDU 2546:饭卡(01背包)
  18. 接口测试maven管理
  19. 利用phar实行php反序列化命令执行(测试环境复现)
  20. Android热点回顾第六期

热门文章

  1. 【云计算】Docker build解决父镜像层级关系过多问题:Cannot create container with more than 127 parents
  2. Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一
  3. r与java整合(转)
  4. 在 TDA 工具里看到 Java Thread State 的第一反应是
  5. 安装Tomcat指定JDK ——转
  6. VUE 数组更新
  7. Sybase数据库应用系统调优的五大领域
  8. poj2983--Is the Information Reliable?(差分约束)
  9. Popup.js
  10. CentOS erlang安装、emqtt