我正在尝试运行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中运行这个程序。
答案 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>
将标准错误重定向到您的文件。