运行 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" 的文件。
我尝试了几种我搜索到的方法,但这里是最具代表性的方法。
我尝试了下面的组合,为了以后使用shell脚本:
matlab -nodisplay -r "matlab_test" &
bg 1
结果:输出文件"test_file.mat"根本没有生成,所以我
假设该进程被置于后台,但它不是 运行ning
那里。
备注:我fg这个过程的时候,生成了文件
我也试过了:
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
我想 运行 远程 Linux 服务器中的几个应用程序实例,这些实例将 运行 以并行方式和注销后进行。我想使用单个 shell 脚本启动它们。
假设我想运行以并行方式执行以下命令:
matlab -nodisplay -r "matlab_test"
matlab -nodisplay -r "matlab_test2"
假设这些进程尽可能频繁地分别更新名为 "test_file.mat" 和 "test_file2.mat" 的文件。
我尝试了几种我搜索到的方法,但这里是最具代表性的方法。
我尝试了下面的组合,为了以后使用shell脚本:
matlab -nodisplay -r "matlab_test" & bg 1
结果:输出文件"test_file.mat"根本没有生成,所以我 假设该进程被置于后台,但它不是 运行ning 那里。
备注:我fg这个过程的时候,生成了文件
我也试过了:
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