Shell:如何在shell脚本中使用屏幕并等待几个后台进程

buf*_*kit 2 parallel-processing shell gnu-screen wait

我正在为一些长时间运行的进程编写一个shell脚本.首先,我需要在屏幕会话管理器中运行所有命令,以便在用户断开连接时,进程的执行不会结束.稍后我需要等待之前创建的一些后台进程结束,以便可以启动以下进程.

我的问题是如何在shell脚本中启动屏幕会话并等待后台进程结束.

Chr*_*ris 5

谷歌搜索"脚本屏幕" 将此作为第一个结果.看起来您可以创建命名的屏幕会话screen -d -m -S nameOfSession.然后screen -X -S <session name> screen将在屏幕会话'nameOfSession'中创建一个窗口.您可以使用此窗口1进行通信(即,为此屏幕会话窗口1提供命令)

screen -X -S test -p 1 stuff "your command here ^M"
Run Code Online (Sandbox Code Playgroud)

"your_command_here"是您要运行的命令.的^M是回车控制字符(你按下Ctrl-V然后输入一个终端/返回).^ M将基本上"按返回/输入",以便在此屏幕会话中运行命令.玩弄它.

由于您要等待命令完成,我建议通过&符号分配进程:

your_command & 紧接着,分叉进程的进程ID在$!中.您可以等待所有后台进程通过运行完成运行wait.

我建议屏幕参考.