在父 shell 中使后台作业可用

在父 shell 中使后台作业可用

有时我会使用另一个脚本(我的情况是 Ruby)启动多个进程。我从运行 bash 的终端调用此脚本。我想在后台启动脚本中的这些进程(通过使用&)。不幸的是,从运行脚本的终端内调用时不会列出这些进程jobs。我猜是因为它们是在子 shell 中运行的。这使得管理它们变得困难。

有没有办法可以通过使用父 shell 中的作业来使用那些进程?

答案1

唯一的方法是让作业本身在父 shell 中启动。

目前您有:

shell -> ruby​​ -> shell -> 命令

如果你可以在 shell 脚本中使用命令,而不是 ruby​​,那么你可以在当前 shell 中使用以下命令执行该 shell 脚本

$ source myfile.sh

或简写:

$ . myfile.sh

然后,该脚本中在后台启动的任何程序都应位于当前 shell 中的作业中。

相关内容