簡體   English   中英

使用自己的 shell 腳本啟動器在 linux 中運行多個后台進程

[英]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

    結果:根本沒有生成 output 文件“test_file.mat”,所以我假設該進程被置於后台,但它沒有在那里運行。

    備注:當我fg這個過程時,文件就生成了。

  2. 我也試過:

     nohup matlab -nodisplay -r "matlab_test" &

    結果:命令提示符被占用,正如我所假設的那樣,它阻止了調用下一個命令。

試試nohup matlab "matlab_test" &

那應該工作。

您可以使用屏幕package。 在大多數 Linux 發行版中,這個 package 已經安裝,但如果沒有,您可以通過存儲庫輕松安裝它。

在 Ubuntu 和 Debian

apt install screen

在 CentOS 和 Fedora

yum install screen

要啟動屏幕 session,只需在控制台中輸入 screen:

screen

您可以隨時通過鍵入以下內容從屏幕 session 分離:

Ctrl+a d

從 session 分離后,屏幕 session 中運行的程序將繼續運行。 要查找 session ID,請列出當前正在運行的屏幕會話:

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.

如果要恢復屏幕 session:

screen -r 10835

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM