[英]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
結果:根本沒有生成 output 文件“test_file.mat”,所以我假設該進程被置於后台,但它沒有在那里運行。
備注:當我fg這個過程時,文件就生成了。
我也試過:
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.