如何在Python中检查给定名称的屏幕是否存在。例如,检查是否正在运行server1?
谢谢:)
谢谢:)
查找当前屏幕会话的内置命令为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")
以下是对代码的一些注释:
1
,这与check_output
函数不兼容,因此我必须使用; true
和shell=True
。"."+
和+\t(
以确保我们匹配的是screen名称而不是输出的其他部分。你可以使用subprocess和pgrep:
import subprocess
p = subprocess.check_output(['pgrep', '-f', 'screen'])
print p
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.