我正在写一个小脚本,它会向正在运行的屏幕会话发送命令。此命令会停止屏幕但不会立即停止。我需要等待它完成才能继续使用脚本的其余部分。
这就是我停止屏幕的方式:
screen -S $SCREEN_NAME -p 0 -X stuff "`printf "stop\r"`"
我怎么能这样做?
答案 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)
这样的东西可以在上面加上时间戳。