sh screen-等待屏幕终止



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

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

screen -S $SCREEN_NAME -p 0 -X stuff "`printf "stopr"`"

我怎么能这么做?

我找到了一个解决方案:

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

像这样:

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

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

如果重新附加屏幕会话,它将自动等待,直到其中的所有进程都完成。如果你试图重新附加到已经完成的会话,它会立即出错。

如果你想在"无头"模式下运行,那么BrainStone的答案就足够了。只需确保对会话($SCREEN_NAME)进行唯一命名即可。类似SCREEN_NAME=$(date +my_screen_thing_+%H%M%S)的东西来获取时间戳。

最新更新