脚本用于连接屏幕并运行命令,但不能分离

脚本用于连接屏幕并运行命令,但不能分离

我想做这样的事:

#!/bin/bash
screen -r session -X run 'long-cleanup-and-quit'
doing-something-else
...

这很好,但我希望“做其他事情”等待屏幕。屏幕 -X 不会阻塞,这是可以理解的。

那么有没有办法可以screen -r session -X run 'long-cleanup-and-quit'附加、运行命令,但不能分离?最终,命令将终止进程/屏幕,以便脚本可以继续。

到目前为止,我的解决方法就是循环执行该过程并等待。

答案1

我通过在此处加入对非屏幕问题的答案找到了一个很好的解决方案:

https://stackoverflow.com/a/36152028/188963

和这里:

https://stackoverflow.com/a/18756584/188963

因此,你可以这样做:

(base) balter@spectre:~$ cat file123
cat: file123: No such file or directory
(base) balter@spectre:~$ screen -dmS test bash -c "echo 123 > file123; bash"
(base) balter@spectre:~$ cat file123
123
(base) balter@spectre:~$ screen -ls
There is a screen on:
        13496.test      (05/19/22 12:04:13)     (Detached)
1 Socket in /home/balter/.screen.

或者

screen -dmS test bash -c "top; bash"

当我连接时,screen -r testtop 正在运行。当我q终止 top 时,我进入了 bash shell。

相关内容