Как я могу узнать, работает ли экран? - PullRequest
0 голосов
/ 30 апреля 2010

Я пытаюсь запустить программу на 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 ]

2 голосов
/ 30 апреля 2010
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")
0 голосов
/ 30 апреля 2010

Возможно, сообщение об ошибке, которое вы перенаправляете при первом вызове os.system, записывается в стандартной ошибке вместо стандартного вывода. Вы должны попробовать заменить эту строку на:

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

Обратите внимание на 2>, чтобы перенаправить стандартную ошибку в ваш файл.

...