如何检查(在python中)具有给定名称的屏幕(例如server1)是否正在运行?谢谢:))
答案 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")
关于代码的几点评论:
; true
和shell=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.