屏幕 - 等待屏幕终止

时间:2013-08-06 18:37:29

标签: shell wait gnu-screen terminate

我正在写一个小脚本,它会向正在运行的屏幕会话发送命令。此命令会停止屏幕但不会立即停止。我需要等待它完成才能继续使用脚本的其余部分。

这就是我停止屏幕的方式:

screen -S $SCREEN_NAME -p 0 -X stuff "`printf "stop\r"`"

我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

我找到了解决方案:

您只需检查屏幕是否仍在运行并等待(sleep)一秒钟。

像这样:

while screen -list | grep -q $SCREEN_NAME
do
    sleep 1
done

答案 1 :(得分:1)

对于*nix系统,您可以在shell脚本中使用wait命令。 wait也可以PID,因此您可以wait $!等待后台运行的最后一个命令。如果您的命令没有在后台运行(命令末尾没有&),那么运行脚本将等到该命令完成

答案 2 :(得分:0)

如果重新连接屏幕会话,它将自动等待直到完成其中的所有过程。而且,如果您尝试重新连接到已经完成的会话,它将立即出错。

如果您想以“无头”模式运行,那么BrainStone的答案就足够了。只要确保将会话($SCREEN_NAME)命名为唯一。像SCREEN_NAME=$(date +my_screen_thing_+%H%M%S)这样的东西可以在上面加上时间戳。