我想做这样的事:
#!/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 test
top 正在运行。当我q
终止 top 时,我进入了 bash shell。