分享

求助:python 使用nohup 启动进程怎么获取pid

grinsky 发表于 2016-11-17 14:42:49 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 9592

>>> x = psutil.Popen("../flume/bin/flume-ng agent   -f ../flume/conf/test.conf  -n a1  >> f.log 2>&1 &",shell=True)
>>>
>>> x.pid
3880

启动flume后,获取pid为3880
[root@hadoop5 test]# ps -ef| grep 3880
root      3880  3850  0 14:35 pts/0    00:00:00 [sh] <defunct>

发现3880的是sh进程而不是flume进程
flume的进程pid为3881
[root@hadoop5 test]# ps -ef | grep flume
root      3881     1  1 14:35 pts/0    00:00:03 /opt/java_home/bin/java -Xmx300m -cp /opt/flume/lib/*:/usr/hdp/current/had


有什么方法能够后后台启动flume并获取它的pid呢?

已有(2)人评论

跳转到指定楼层
einhep 发表于 2016-11-17 15:01:35
你的代码本身获取的就不是flume进程。
那就通过代码获取flume进程即可。
获取进程号,网上很多这方面的。
当然你可以通过在Python里执行shell,照样可以获取。
ps -ef | grep flume

#################

获取进程号的代码,网上也很多,楼主也可以参考下面代码


保存为.py文件后 运行脚本在后面添加进程名称即可 比如:python proinfo.py qq 即可获取QQ的进程信息,注意不区分大小写
#-*- encoding:UTF-8 -*-
import os
import sys
import string
import psutil
import re

def get_pid(name):
  process_list = psutil.get_process_list()
  regex = "pid=(/d+),/sname=/'" + name + "/'"
  print regex
  pid = 0
  for line in process_list:
    process_info = str(line)
    ini_regex = re.compile(regex)
    result = ini_regex.search(process_info)
    if result != None:
        pid = string.atoi(result.group(1))
        print result.group()
        break
def main(argv):<br>  name = argv[1]<br>  get_pid(name)

if __name__ == "__main__":
  main(sys.argv)

代码说明:

1.import psutil 需要安装,用于获取linux下进程列表
process_list = psutil.get_process_list() #获取进程列表

2.import re: python处理正则的模块
regex = "pid=(/d+),/sname=/'" + name + "/'" #组成string类型的正则表达式
ini_regex = re.compile(regex)#初始化正则表达式
result = ini_regex.search(process_info)#正则表达式匹配
result.group(0):匹配到的整个字符串的内容
result.group(1):匹配第一个()中的内容

回复

使用道具 举报

grinsky 发表于 2016-11-17 18:56:50
einhep 发表于 2016-11-17 15:01
你的代码本身获取的就不是flume进程。
那就通过代码获取flume进程即可。
获取进程号,网上很多这方面的。 ...

不行的,我要是启动1个flume这些方法都可以
但同时启动2个或以上就无法区分了
最后只能启动第一个时就记录下来 这个flume的pid
后面再次启动flume时找到的flume pid去掉直接记录的就是新启的flume的pid……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条