如何在 Linux 電腦上在背景正確運行 java 批次應用程式(.jar 應用程式)?

如何在 Linux 電腦上在背景正確運行 java 批次應用程式(.jar 應用程式)?

我不是系統工程師(我是軟體開發人員)。我必須執行一個Java應用程式(一個可以執行的檔案)在 Linux 機器(Centos 7)上。我正在透過 SSH 連接到 shell。該應用程式位於格式化並實現批次應用程式並包含其調度程序。

我必須在遠端伺服器上在後台運行它,以便在我退出 shell 後它仍然運行。

我執行此命令是為了在背景運行我的應用程式:

java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar &

然後我點擊了CTRL+C在我的鍵盤上,以便再次獲得 shell 上的鍵盤提示符。

這裡是第一個奇怪的行為:我再次獲得 shell 提示字元和插入命令的可能性,但如果應用程式記錄某些內容,它就會出現在 shell 上。為什麼?我預計我的應用程式仍在後台運行。

無論如何,我現在在 shell 中提示此命令,以檢查我的應用程式是否正在運行:

[email protected] [~/zzz-import-data-batch]# ps aux | grep java
xxx 23307 15.3  1.6 4871172 418980 pts/0  Sl   10:23   0:22 java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar
webadmin 23522  0.0  0.0 112812   980 pts/0    S+   10:25   0:00 grep --color=auto java

是的,我的應用程式似乎正確運行(第一個)。

然後我關閉與 shell 的連接,再次登入並再次執行先前的命令,但現在我得到了:

[email protected] [~/zzz-import-data-batch]# ps aux | grep java
xxx 23919  0.0  0.0 112812   980 pts/0    S+   10:27   0:00 grep --color=auto java

正如您所看到的,我斷開與外殼的連接後,當我進行新的登入時,我的批次應用程式似乎沒有運行(事實上我的作業應用程式沒有運行)。

怎麼了?我缺什麼?在後台運行 java jar 批次應用程式的好方法是什麼?

答案1

您需要在 shell 終止之前取消後台作業與 shell 的關聯。

當你輸入 時command &,系統給了你一個job-id,看起來像“[1] 25177”,哪裡1是job-id。

您現在應該使用 否認命令。對於上面的例子,這將是:

disown 1

或做所有的工作(因為你只有一項):

disown

有關更多信息,請參見示例 Linux / Unix:disown 指令

相關內容