如何判断屏幕是否正在运行?

时间:2010-04-30 15:35:35

标签: python linux gnu-screen

我正在尝试运行Python程序以查看屏幕程序是否正在运行。如果是,则程序不应运行其余代码。这就是我所拥有的,而且它不起作用:

#!/usr/bin/python

import os
var1 = os.system ('screen -r > /root/screenlog/screen.log')
fd = open("/root/screenlog/screen.log")
content = fd.readline()

while content:
 if content == "There is no screen to be resumed.":
  os.system ('/etc/init.d/tunnel.sh')
  print "The tunnel is now active."
 else:
  print "The tunnel is running."
fd.close()

我知道这里可能有几件事情并不需要,而且很多我都不知道。我将在cron中运行这个程序。

2 个答案:

答案 0 :(得分:2)

from subprocess import Popen, PIPE

def screen_is_running():
    out = Popen("screen -list",shell=True,stdout=PIPE).communicate()[0]
    return not out.startswith("This room is empty")

答案 1 :(得分:-1)

也许在第一个os.system调用上重定向的错误消息是在标准错误而不是标准输出上写的。您应该尝试用以下代码替换此行:

var1 = os.system ('screen -r 2> /root/screenlog/screen.log')

请注意2>将标准错误重定向到您的文件。