screen
仅当它不存在时,如何才能在分离模式下创建它?
这会在分离模式下创建一个名为 name 的屏幕,但会创建重复项
screen -dmS name command
Run Code Online (Sandbox Code Playgroud)
仅当屏幕不存在但未分离时才会创建屏幕
screen -dRms name command
Run Code Online (Sandbox Code Playgroud)
我如何将两者结合起来?我需要在批处理文件中创建多个屏幕,因此重新连接不方便。我想使用批处理文件“重新启动”由于各种原因而死亡的屏幕,但保持已经运行的屏幕完好无损。
我刚刚偶然发现了这个问题并像这样解决了它:
就我而言,我感兴趣的屏幕会话名称是'activity'
(对于我的活动跟踪器项目)。
does_screen_session_exist.py
Python 3.4+;无依赖关系:
#!/usr/bin/env python
"""
Check if a screen session exists.
If it does, give exit code 0.
If it doesn't, give exit code 1.
"""
import subprocess
import sys
from argparse import ArgumentParser
from typing import List
parser = ArgumentParser()
parser.add_argument("session_name")
def main(session_name: str) -> None:
session_names = get_active_screen_sessions()
if session_name in session_names:
print(f"Screen session '{session_name}' exists")
sys.exit(0)
else:
print(f"Screen session '{session_name}' does NOT exist")
sys.exit(1)
def get_active_screen_sessions() -> List[str]:
result = subprocess.run(["screen", "-ls"], stdout=subprocess.PIPE)
output = result.stdout.decode("utf-8")
if "No Sockets found" in output:
return []
assert "There is a screen on" in output
# get lines
lines = []
for line in output.splitlines():
if line.startswith("\t"):
lines.append(line)
# get session names
session_names = []
for line in lines:
line = line.strip()
line = line.split("\t")[0]
line = line.split(".")[1]
session_names.append(line)
return session_names
if __name__ == "__main__":
args = parser.parse_args()
main(args.session_name)
Run Code Online (Sandbox Code Playgroud)
python does_screen_session_exist.py activity
status=$?
if [ $status = 0 ]
then
echo 'activity' screen exists
else
echo Start activity screen
screen -S activity -U -d -m activity_tracker log-activity
fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1353 次 |
最近记录: |