恢复最后一个屏幕,如果有的话

时间:2014-03-09 12:59:31

标签: bash piping

基本上我需要一个脚本来检查是否有一个屏幕正在运行" 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,但我不知道使用什么命令以及如何使用,是吗?

2 个答案:

答案 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,但如果不存在,则会创建并附加到其中。