如何检查屏幕是否正在运行

时间:2011-11-04 20:09:33

标签: python gnu-screen

如何检查(在python中)具有给定名称的屏幕(例如server1)是否正在运行?谢谢:))

3 个答案:

答案 0 :(得分:3)

用于查找当前屏幕会话的内置命令是screen -ls

在python中获得相同的功能:

from subprocess import check_output

def screen_present(name):
        var = check_output(["screen -ls; true"],shell=True)
        if "."+name+"\t(" in var:
                print name+" is running"
        else:
                print name+" is not running"

screen_present("server1")

关于代码的几点评论:

  • 我必须使用; trueshell=True,因为屏幕会返回1的退出代码,该代码与check_output函数的效果不佳。
  • 另外,我添加了"."++\t(,以确保我们匹配的是屏幕名称,而不是打印输出的另一部分。

答案 1 :(得分:2)

你可以使用subprocess和pgrep:

import subprocess

p = subprocess.check_output(['pgrep', '-f', 'screen'])
print p

答案 2 :(得分:0)

首先,你想要实现什么目标?你知道你可以简单地重新连接正在运行的屏幕会话,对吗?

screen -DRS admin # creates a new session if it isn't running

同样使用screen -x -S admin 分享 admin会话,而无需强制分离已连接的用户。


直接回答:

您只需使用

的输出即可
screen -ls

列出了所有正在运行的会话,并显示它们是否也已附加:

There are screens on:
        6675.third      (11/04/2011 09:25:49 PM)        (Attached)
        6668.pts-2.koolu        (11/04/2011 09:25:38 PM)        (Attached)
        6644.admin      (11/04/2011 09:25:21 PM)        (Detached)
3 Sockets in /var/run/screen/S-sehe.