有时我会使用另一个脚本(我的情况是 Ruby)启动多个进程。我从运行 bash 的终端调用此脚本。我想在后台启动脚本中的这些进程(通过使用&
)。不幸的是,从运行脚本的终端内调用时不会列出这些进程jobs
。我猜是因为它们是在子 shell 中运行的。这使得管理它们变得困难。
有没有办法可以通过使用父 shell 中的作业来使用那些进程?
答案1
唯一的方法是让作业本身在父 shell 中启动。
目前您有:
shell -> ruby -> shell -> 命令
如果你可以在 shell 脚本中使用命令,而不是 ruby,那么你可以在当前 shell 中使用以下命令执行该 shell 脚本
$ source myfile.sh
或简写:
$ . myfile.sh
然后,该脚本中在后台启动的任何程序都应位于当前 shell 中的作业中。