基本上我需要一个脚本来检查是否有一个屏幕正在运行" serverman"。 如果存在,则恢复它,否则创建新的。
所以我想解析" sceen -ls"并检查是否有一个名为" serverman"。
这是"屏幕-ls"输出
There are screens on:
7423.212 (03/09/14 08:48:58) (Detached)
7411.1as (03/09/14 08:48:49) (Detached)
2 Sockets in /var/run/screen/S-root.
我正在调整一个命令,可以通过管道解析它并搜索" serverman"字。 如果任何设置isalreadyrunning = 1,否则将其设置为0,但我不知道使用什么命令以及如何使用,是吗?
答案 0 :(得分:2)
我为tmux
粘贴了一个工作脚本,显然我在旧MacBook上有旧的screen
,它提供了不同的输出。您应该可以轻松修改它(但我建议切换到tmux
,这样会更好)
# created sessions with
# tmux new -s hello
# tmux new -s world
SEARCHING="hello"
found_session=$(tmux ls 2> /dev/null | perl -ne "if (/(^${SEARCHING}):/) {print \"\$1\"}" | head -n1)
if [ -z "$found_session" ]; then
echo Session not found, creating new.
tmux new -s $SEARCHING
else
echo Found $found_session, attaching.
tmux a -t $found_session
fi
答案 1 :(得分:2)
您已经可以使用现有的screen
选项执行此操作,而无需显式检查命名会话。如果存在,screen -D -R serverman
将附加到serverman
,但如果不存在,则会创建并附加到其中。