我正在编写一个小脚本,它确实向正在运行的屏幕会话发送命令。此命令会停止屏幕,但不会立即停止。我需要等待它完成,以便继续脚本的其余部分。
我就是这样停止屏幕的:
screen -S $SCREEN_NAME -p 0 -X stuff "`printf "stop\r"`"我怎么能这么做?
发布于 2013-08-08 22:14:12
我找到了一个解决办法:
您只需检查屏幕是否仍在运行,并等待(sleep)一秒钟。
如下所示:
while screen -list | grep -q $SCREEN_NAME
do
sleep 1
done发布于 2013-08-06 18:51:13
对于*nix系统,可以在shell脚本中使用wait命令。wait也可以使用PID,所以您可以在后台执行最后一次执行的命令时执行wait $!。如果您的命令没有在后台运行(命令末尾没有& ),那么运行脚本将等待该命令完成。
发布于 2019-09-13 19:17:43
如果重新附加屏幕会话,则屏幕会话将自动等待,直到完成所有进程。如果您试图重新附加到已经完成的会话,它将立即出错。
如果你想在“无头”模式下运行,那么BrainStone的回答就足够好了。只需确保将会话($SCREEN_NAME)命名为唯一。类似SCREEN_NAME=$(date +my_screen_thing_+%H%M%S)的东西,可以在上面加盖时间戳。
https://stackoverflow.com/questions/18087964
复制相似问题