6

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

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

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

我怎么能这样做?

4

3 回答 3

10

我找到了一个解决方案:

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

像这样:

while screen -list | grep -q $SCREEN_NAME
do
    sleep 1
done
于 2013-08-08T22:14:12.153 回答
0

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

于 2013-08-06T18:51:13.693 回答
0

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

如果你想在“无头”模式下运行,那么 BrainStone 的回答就足够了。只需确保以$SCREEN_NAME唯一的方式命名您的会话 ( )。像SCREEN_NAME=$(date +my_screen_thing_+%H%M%S)得到一个时间戳的东西。

于 2019-09-13T19:17:43.527 回答