命令行输入的命令,和命令运行时的PID并不是同一个。

例如有如下一段代码perf_test.py:

1 importsubprocess2 importtime3 importos4 importsignal5

6 cmd = "sudo perf record -e cpu-clock -g -p {} -o perf_{}.data".format(os.getpid(), os.getpid())7 print(cmd)8 p = subprocess.Popen(cmd, shell=True)9 print("cur process pid: {}".format(os.getpid()))10 print("cur process's parent process pid: {}".format(os.getppid()))11

12 print("subprocess pid: {}".format(p.pid))13 print("session pid which subprocess exist in: {}".format(os.getsid(p.pid)))14 print("subprocess's group pid: {}".format(os.getpgid(p.pid)))15

16 time.sleep(10)17 get_cmd_pid = "pgrep '{}'".format('perf')18 cmd_pid =os.popen(get_cmd_pid).read()19 print("{} : {}".format(get_cmd_pid, cmd_pid))20

21 os.kill(p.pid, signal.SIGINT)

(1)在命令行输入:$ sudo python perf_test.py,打印如下:

sudo perf record -e cpu-clock -g -p 9621 -o perf_9621.data

cur process pid: 9621

cur process's parent process pid: 9620

subprocess pid: 9622

session pid which subprocess exist in: 22480

subprocess's group pid: 9620

pgrep 'perf' : 9624

(2)待perf_test.py运行起来后,运行结束前,在另一terminal中查看perf pid:

$ pgrep "perf"

9624

$ ps a

PID TTY STAT TIME COMMAND

9620 pts/20 S+ 0:00 sudo python perf_test.py

9621 pts/20 S+ 0:00 python perf_test.py

9622 pts/20 S+ 0:00 /bin/sh -c sudo perf record -e cpu-clock -g -p 9621 -o perf_9621.data

9623 pts/20 S+ 0:00 sudo perf record -e cpu-clock -g -p 9621 -o perf_9621.data

9624 pts/20 S+ 0:00 /usr/lib/linux-tools/4.15.0-107-generic/perf record -e cpu-clock -g -p 9621 -o perf_9621.data

9629 pts/19 R+ 0:00 ps a

22480 pts/20 Ss 0:01 bash

可见:

(a)PID9620的COMMAND恰好是(1)中命令行的输入。

(b)PID9621是perf_test.py运行时的PID,从(1)打印看即示例代码中os.getpid()的获取值。而且从(1)的打印看9620恰是9621的父PID。

(c)示例代码中使用subprocess启动了一个命令,该命令行的PID是9622,从(1)和(2)可以看到。同时从(2)可见,该命令行与命令的实际运行/内核运行都有不同的PID

(d)使用pgrep 'perf'获取的是内核运行的PID

参考:

python调用命令行获取pid_命令行命令/命令运行时的pid及获取相关推荐

  1. 利用Python调用云Api实现多地域同步运行TAT命令

    0.准备工作 ​ ​ 使用本代码请先进行子用户创建并授权云API与轻量应用服务器全部权限 请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删 ...

  2. python调用crt自动登录_Python 脚本实现 SecureCRT 命令自动化

    摘要 因为在串口交互中,SecureCRT使用的频率是比较高的,因此我们就用这个工具来实现脚本自动化,现在分享一个简单的,就是每一秒钟发送一条命令即可. 为了获取数据,需要一秒钟输入一条命令,持续可能 ...

  3. python 调用mysql_Python中直接在MySQL执行SQL命令

    因为懒,所以不想用SQLyog,用Python写了一个快速执行SQL命令的程序:import pymysql,sys class dealMySQL(object): 'PyMysql' versio ...

  4. python调用scp上传目录_python执行scp命令拷贝文件及文件夹到远程主机的目录方法...

    系统环境centos7 python2.7 先在操作系统安装expect [root@V71 python]# vi 3s.py #!/usr/bin/python #coding:utf-8 imp ...

  5. python运行过程中占用内存越来越大_Python 程序运行时CPU和内存高解决思路

    这篇文章是基于上篇文章的续章~ 一台机器要部署很多爬虫,每天定时执行的情况下,服务器CPU和内存占比较高的情况出现后 模拟一份代码,进行分析. 一个简单的爬虫程序,爬取10页数据共计150条,每天定时 ...

  6. python调用c++_python高性能编程之Cython篇 第一章

    第一节 cython的潜能 •Cython是一种编程语言,它将Python与C和C ++的静态类型系统相结合. •Cython是一个将Cython源代码转换为高效的C或C ++源代码的编译器.然后可以 ...

  7. 一些cmd命令和linux触摸板关启命令

    linux触摸板关启命令 关触摸板命令: sudo modprobe -r psmouse 开触摸板命令: sudo modprobe psmouse 一些cmd命令 一.基础命令 1dir 无参数: ...

  8. Python调用腾讯API进行人像动漫化

    Python调用腾讯API进行人像动漫化 1. 作者介绍 2. API获取 3. 代码调试 3.1整体结构 3.2 代码解析 3.3完整代码 3.4效果展示: 4. 问题与分析 1. 作者介绍 李犇, ...

  9. python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

最新文章

  1. OPPO Find X3通过网站推广正式官宣,打破常规探索高端旗舰新突破!
  2. nicetool好工具_N个办公辅助好工具,无需下载,简单实用
  3. VANSI致力成为全球优质数字资产交易平台的典范
  4. Samba服务器如何与Windows 95共享?
  5. 洛谷 P2324 [SCOI2005]骑士精神 解题报告
  6. 拉取ftp服务器上的文件_winscp和云服务器,2步实现winscp将文件上传到腾讯云Linux云服务器...
  7. springboot 历史版本文档_乘风破浪,SpringBoot入门
  8. python中浮点数类型_Python基本数据类型之浮点型
  9. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 情感分析
  10. java用selenium库控制chrome
  11. matlab相关性分析频谱_利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]
  12. npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
  13. 关于常量池的一些整理
  14. python 切片步长_python 索引+切片+步长
  15. 跨模态检索 | Visual Representation Learning
  16. 中国电信 CTExcel - 亲测境外首选电话卡(推荐码:SHQL 或 KJNC)
  17. 当页面放大后, 背景会消失
  18. ajaxfileupload 上传插件
  19. 数字IC设计学习笔记_静态时序分析STA_伪路径False Paths
  20. Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等

热门文章

  1. 初探Thymeleaf模板引擎
  2. 6.边缘检测:梯度——计算梯度Matlab实战_5
  3. 微型计算机中外储存器比内储存器,计算机笔试复习题集共23页.doc
  4. php数值相加_PHP+Redis 有序集合实现 24 小时排行榜实时更新
  5. 【英语学习】【Daily English】U11 Work L03 He is a had guy to work for
  6. Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统
  7. Android Studio增加assets目录、raw目录
  8. 74ls90设计十进制计数器电路图_利用555与74ls90制作电子秒表
  9. mysql统计今天发布了多少条_Mysql统计总结 - 最近30天,昨天的数据统计
  10. 图形学理论 光照模型