通过grepping两个变量使用python查找pid

时间:2018-03-22 01:28:30

标签: python python-3.6

我试图使用下面的命令

找到oracle进程的pid

ps -ef | grep pmon | grep orcl | grep -v grep

尝试使用python时 oracle_pid = os.system(" echo ps -ef | grep pmon | grep %s | grep -v grep | awk '{print $2}'"%(oracle_sid)) 打印(oracle_pid)

它将0打印为值

关于如何实现pid作为输出的任何建议?

此致

2 个答案:

答案 0 :(得分:0)

来自docs

  

(...)在Unix上,返回值是以wait()(...)

指定的格式编码的进程的退出状态

由于你的程序运行正常,它返回0。

要获得所需的输出,您必须使用subprocess模块(https://docs.python.org/3.6/library/subprocess.html#subprocess.check_output):

import subprocess
oracle_pid = subprocess.check_output("ps -ef | grep pmon | grep %s | grep -v grep | awk '{print $2}'", stderr=subprocess.STDOUT, shell=True).strip().decode("utf-8")

答案 1 :(得分:0)

感谢您的回复! 该命令有效,但它正在添加额外的字符

  
    
      

导入子流程       subprocess.check_output(“ps -ef | grep pmon | grep orcl | grep -v grep | awk'{print $ 2}'”,stderr = subprocess.STDOUT,shell = True)       b'21648 \ N'