python调用命令行获取pid_命令行命令/命令运行时的pid及获取
命令行输入的命令,和命令运行时的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及获取相关推荐
- 利用Python调用云Api实现多地域同步运行TAT命令
0.准备工作 使用本代码请先进行子用户创建并授权云API与轻量应用服务器全部权限 请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删 ...
- python调用crt自动登录_Python 脚本实现 SecureCRT 命令自动化
摘要 因为在串口交互中,SecureCRT使用的频率是比较高的,因此我们就用这个工具来实现脚本自动化,现在分享一个简单的,就是每一秒钟发送一条命令即可. 为了获取数据,需要一秒钟输入一条命令,持续可能 ...
- python 调用mysql_Python中直接在MySQL执行SQL命令
因为懒,所以不想用SQLyog,用Python写了一个快速执行SQL命令的程序:import pymysql,sys class dealMySQL(object): 'PyMysql' versio ...
- python调用scp上传目录_python执行scp命令拷贝文件及文件夹到远程主机的目录方法...
系统环境centos7 python2.7 先在操作系统安装expect [root@V71 python]# vi 3s.py #!/usr/bin/python #coding:utf-8 imp ...
- python运行过程中占用内存越来越大_Python 程序运行时CPU和内存高解决思路
这篇文章是基于上篇文章的续章~ 一台机器要部署很多爬虫,每天定时执行的情况下,服务器CPU和内存占比较高的情况出现后 模拟一份代码,进行分析. 一个简单的爬虫程序,爬取10页数据共计150条,每天定时 ...
- python调用c++_python高性能编程之Cython篇 第一章
第一节 cython的潜能 •Cython是一种编程语言,它将Python与C和C ++的静态类型系统相结合. •Cython是一个将Cython源代码转换为高效的C或C ++源代码的编译器.然后可以 ...
- 一些cmd命令和linux触摸板关启命令
linux触摸板关启命令 关触摸板命令: sudo modprobe -r psmouse 开触摸板命令: sudo modprobe psmouse 一些cmd命令 一.基础命令 1dir 无参数: ...
- Python调用腾讯API进行人像动漫化
Python调用腾讯API进行人像动漫化 1. 作者介绍 2. API获取 3. 代码调试 3.1整体结构 3.2 代码解析 3.3完整代码 3.4效果展示: 4. 问题与分析 1. 作者介绍 李犇, ...
- python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
最新文章
- OPPO Find X3通过网站推广正式官宣,打破常规探索高端旗舰新突破!
- nicetool好工具_N个办公辅助好工具,无需下载,简单实用
- VANSI致力成为全球优质数字资产交易平台的典范
- Samba服务器如何与Windows 95共享?
- 洛谷 P2324 [SCOI2005]骑士精神 解题报告
- 拉取ftp服务器上的文件_winscp和云服务器,2步实现winscp将文件上传到腾讯云Linux云服务器...
- springboot 历史版本文档_乘风破浪,SpringBoot入门
- python中浮点数类型_Python基本数据类型之浮点型
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 情感分析
- java用selenium库控制chrome
- matlab相关性分析频谱_利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]
- npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
- 关于常量池的一些整理
- python 切片步长_python 索引+切片+步长
- 跨模态检索 | Visual Representation Learning
- 中国电信 CTExcel - 亲测境外首选电话卡(推荐码:SHQL 或 KJNC)
- 当页面放大后, 背景会消失
- ajaxfileupload 上传插件
- 数字IC设计学习笔记_静态时序分析STA_伪路径False Paths
- Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等
热门文章
- 初探Thymeleaf模板引擎
- 6.边缘检测:梯度——计算梯度Matlab实战_5
- 微型计算机中外储存器比内储存器,计算机笔试复习题集共23页.doc
- php数值相加_PHP+Redis 有序集合实现 24 小时排行榜实时更新
- 【英语学习】【Daily English】U11 Work L03 He is a had guy to work for
- Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统
- Android Studio增加assets目录、raw目录
- 74ls90设计十进制计数器电路图_利用555与74ls90制作电子秒表
- mysql统计今天发布了多少条_Mysql统计总结 - 最近30天,昨天的数据统计
- 图形学理论 光照模型