1. Jar包部署在linux後台永久運行
在Linux後台永久運行Jar包的部署方法主要有兩種:
方法一使用nohup命令,語法為nohup java -jar xxx.jar &。此命令在後台運行指定的Java程序,不會因為關閉當前控制台或退出賬戶而停止運行。默認情況下,nohup命令會將程序的輸出結果轉移到nohub.out文件中,該文件位於程序執行的目錄下。你可以自定義輸出文件名稱,例如nohup java -jar xxx.jar >out.file 2>&1 &。此命令將程序的輸出和錯誤信息重定向到out.file文件,同時在後台執行程序。
方法二在執行命令時添加&,例如java -jar xxx.jar >out.log &。這樣可以在後台運行程序,並可選擇性地將控制台輸出轉移到文件out.log中。重要的是在退出shell會話時,正確使用exit命令,避免直接關閉終端窗口。直接關閉窗口會導致程序所在session被中斷,從而導致後台進程結束運行。正確退出可以保持程序的持續運行。
2. Linux下運行jar包的幾種方式
1 阻塞式方式
java -jar xxx.jar
特點: 當前終端的會話窗口被阻塞, 可按CTRL + C中斷程序的運行, 或者直接關閉會話窗口 —— 此時jar程序將終止.
2 後台運行方式
# 通過"&"符號實現後台運行:
java -jar xxx.jar &
特點: 當前終端的會話窗口不會被阻塞, 但是如果關閉當前窗口, 程序將終止運行.
3 後台持續運行方式
# 通過"nohup"命令實現後台運行:
nohup java -jar xxx.jar &
nohup命令是不掛斷運行命令的意思.
特點: 當用戶退出或終端關閉時, 程序的運行不受影響.
說明: 用nohup命令運行任務時, 默認情況下這個任務的所有輸出都將被重定向到nohup.out文件中, 除非另外指定輸出文件. 指定輸出文件方式為:
# 將輸出重定向到xxx.log文件中:
nohup java -jar xxx.jar > xxx.log &
> 符號是重定向符, 實現: 把它之前命令的所有輸出信息重定向到後面的文件中, 而不是顯示到屏幕上.
3. linux下jar包啟動命令,我用nohup java -jar + *.jar命令啟動,此時命令
nohup java -jar + *.jar &
這樣就可以再後台運行了。
liunx命令後+&為後台運行指令
4. Linux 中啟動jar包命令
在Linux環境中,啟動jar包時可能會遇到一些問題,尤其是在集成工具如Jenkins和GitLab CI中,如果直接使用`java -jar`命令啟動,可能會導致程序運行後阻塞進程,導致jenkins任務無法正常結束。為了解決這個問題,有幾種方式可以嘗試:
首先,如果你希望啟動jar包後不鎖定窗口,可以使用`&`符號將命令置於後台運行,這樣當前ssh窗口不會被鎖定,但窗口關閉時程序會中止。然而,如果你需要窗口關閉後程序仍保持運行,可以使用`nohup`命令,它能確保即使賬戶退出或終端關閉,程序也能繼續執行。nohup命令的一個特性是,默認情況下,所有輸出會被重定向到nohup.out文件中,除非另有指定。
另一種方法是使用輸出重定向`command >out.file`,這會將命令的輸出內容定向到out.file文件中,而非直接顯示在屏幕上。這樣可以查看日誌,同時保持命令在後台運行。
要查看所有後台運行的任務,你可以使用`jobs`命令,它會列出作業編號及其狀態,通過`fg + 編號`可以將作業調回前台控制。
總的來說,根據你的需求選擇合適的方法,如後台運行保持窗口可用、或使用nohup確保程序持續運行,通過輸出重定向管理日誌,以及監控後台任務,都能幫助你更好地管理和控制Linux中啟動的jar包。
5. 怎麼把java的.jar程序在linux上注冊成服務,設置開機自啟動
您好,具體可以依據您的系統版本來。
有的系統不支持systemd只能用init.d
首先寫啟動代碼
#!/bin/bash
java jar文件回1 & # 有多個程序答時注意加上&號
java jar文件2 &
保存到init-java文件里
如果您的系統支持init.d那麼可以放在/etc/init.d目錄下,注意可執行許可權0755或者0777。
不支持init.d可以使用systemd實現
將init-java移動到/usr/bin/
然後寫一個systemd服務
[Unit]
Description=Virtualbox Kernel Loader
[Service]
ExecStart=/usr/bin/init-java
[Install]
WantedBy=multi-user.target
保存到/etc/systemd/system/init-java.service
然後systemctl enable init-java即可。