运行 linux 中的多个后台进程使用自己的 shell 脚本启动器

Running several background processes in linux using own shell script launcher

我想 运行 远程 Linux 服务器中的几个应用程序实例,这些实例将 运行 以并行方式和注销后进行。我想使用单个 shell 脚本启动它们。

假设我想运行以并行方式执行以下命令:

matlab -nodisplay -r "matlab_test"
matlab -nodisplay -r "matlab_test2"

假设这些进程尽可能频繁地分别更新名为 "test_file.mat" 和 "test_file2.mat" 的文件。

我尝试了几种我搜索到的方法,但这里是最具代表性的方法。

  1. 我尝试了下面的组合,为了以后使用shell脚本:

    matlab -nodisplay -r "matlab_test" &
    bg 1
    

    结果:输出文件"test_file.mat"根本没有生成,所以我 假设该进程被置于后台,但它不是 运行ning 那里。

    备注:我fg这个过程的时候,生成了文件

  2. 我也试过了:

    nohup matlab -nodisplay -r "matlab_test" &
    

    结果:命令提示符被占用,正如我所假设的,这阻止了 调用下一个命令。

尝试nohup matlab "matlab_test" &

应该可以。

您可以使用 screen 包。在大多数 Linux 发行版中,这个软件包已经安装,但如果没有,您可以通过存储库轻松安装它。

在 Ubuntu 和 Debian

apt install screen

在 CentOS 和 Fedora 上

yum install screen

要启动屏幕会话,只需在您的控制台中键入屏幕:

screen

您可以随时通过键入以下内容退出屏幕会话:

Ctrl+a d

屏幕会话中的程序 运行ning 将在您从会话中分离后继续 运行。 要查找会话 ID,请列出当前 运行ning 屏幕会话:

screen -ls
There are screens on:
    10835.pts-0.linuxize-desktop   (Detached)
    10366.pts-0.linuxize-desktop   (Detached)
2 Sockets in /run/screens/S-linuxize.

如果您想恢复屏幕会话:

screen -r 10835