前言
初次使用Linux服務(wù)器的小伙伴,在運(yùn)行jar包的時(shí)候流强,可能會(huì)遇到以下問題:
1.如何把命令放在后臺(tái)執(zhí)行痹届?
2.終端關(guān)閉了,運(yùn)行中的命令如何不受終端影響打月?
3.如何找到已經(jīng)運(yùn)行的jar包队腐?
4.如果關(guān)閉已經(jīng)運(yùn)行的jar包?
5.如何設(shè)置開機(jī)啟動(dòng)奏篙?
6.多個(gè)jar包柴淘,啟動(dòng)有先后順序,如何設(shè)置延遲啟動(dòng)秘通?
運(yùn)行jar包
在Linux系統(tǒng)下悠就,啟動(dòng)架包和在windows下啟動(dòng)jar包的命令是一樣的,但有個(gè)前提充易,你必須先安裝jdk或jre;
java -jar xxx.jar
問題1:如何把運(yùn)行命令放在后臺(tái)執(zhí)行荸型?
java -jar xxx.jar &
說明:在命令的末尾加上一個(gè)&符號盹靴,就能讓該命令在后臺(tái)運(yùn)行,在終端輸入中斷命令ctrl+c瑞妇,也不會(huì)影響該架包的啟動(dòng)稿静;但是終端執(zhí)行exit退出終端窗口,或終端窗口連接超時(shí)辕狰,該命令就會(huì)被迫kill改备。
問題2:終端關(guān)閉了,運(yùn)行中的命令如何不受終端影響蔓倍?
nuhup java -jar xxx.jar &
說明:在命令的前面加上nohup悬钳,就可以保證啟動(dòng)命令徹底脫離終端窗口;
nohup偶翅,全稱no hang up(不掛起)默勾,不掛斷運(yùn)行命令,當(dāng)賬戶退出或終端關(guān)閉時(shí)聚谁,程序仍然在后臺(tái)運(yùn)行母剥;并且在當(dāng)前命令下生成一個(gè)nohup.out的日志文件,日志文件中記錄了啟動(dòng)信息;
nohup java -jar xxx.jar >xx.log &
說明:該命令多了 >xx.log环疼,意思是把啟動(dòng)jar日志輸出到xx.log文件中习霹;如果啟動(dòng)失敗,還可以查看該日志獲取啟動(dòng)失敗信息炫隶;
nohup java -jar xxx.jar >xx.log 2>&1 &
說明:該命令多了2>&1淋叶,它的意思是,將標(biāo)準(zhǔn)錯(cuò)誤2重定向到標(biāo)準(zhǔn)輸出1等限,標(biāo)準(zhǔn)輸出1再被重定向輸入到xx.log中爸吮;
0 – stdin (standard input,標(biāo)準(zhǔn)輸入)
1 – stdout (standard output望门,標(biāo)準(zhǔn)輸出)
2 – stderr (standard error形娇,標(biāo)準(zhǔn)錯(cuò)誤輸出)
結(jié)束jar包運(yùn)行
問題3:如何找到已經(jīng)運(yùn)行的jar包?
ps aux | grep xxx.jar
說明:ps是process status的簡稱筹误,用于顯示當(dāng)前進(jìn)程的狀態(tài)桐早;
a:all簡稱,顯示所有程序厨剪;
u:user簡稱哄酝,以用戶為主的格式來顯示;
x:顯示所有程序祷膳,不區(qū)分終端機(jī)陶衅;
問題4:如果關(guān)閉已經(jīng)運(yùn)行的jar包?
kill -9 PID(進(jìn)程號)
說明:使用第9種信號(SIGKILL)無條件終止該進(jìn)程直晨;
問題5:如何設(shè)置開機(jī)啟動(dòng)搀军?
#將架包啟動(dòng)命令,添加到開機(jī)啟動(dòng)文件中/etc/rc.d/rc.local
java -jar xxx.jar &
説明:要保證/etc/rc.d/rc.local文件具有執(zhí)行權(quán)限勇皇;
多jar包延遲啟動(dòng)
問題6:多個(gè)jar包罩句,且啟動(dòng)有先后順序,如何設(shè)置延遲啟動(dòng)敛摘?
1)創(chuàng)建多個(gè)jar開機(jī)啟動(dòng)bash文件门烂;
vim /etc/rc.d/jar_multi_start.sh
#按下 i 鍵打開插入模式
i
2)jar_multi_start.sh文件內(nèi)容如下;
#!/bin/bash
export PATH="$PATH":/usr/local/java/jdk1.8.0_281/bin
sleep 10s;java -jar /usr/local/xxx1.jar &
java -jar /usr/local/xxx2.jar &
sleep 5s;java -jar /usr/local/xxx3.jar &
sleep 10s;java -jar /usr/local/xxx4.jar &
說明:如果某個(gè)架包前面有需要先運(yùn)行的應(yīng)用兄淫,那么可以設(shè)置一個(gè)相對合理的等待時(shí)間屯远,這里使用sleep設(shè)置;比如捕虽,運(yùn)行jar包前mysql必須是啟動(dòng)的氓润,否則會(huì)啟動(dòng)報(bào)錯(cuò);這個(gè)時(shí)候薯鳍,就可以給jar運(yùn)行設(shè)置一個(gè)大概的睡眠時(shí)間咖气,等mysql啟動(dòng)好后挨措,再執(zhí)行jar包。
3)保存jar_multi_start.sh文件崩溪;
#按下ESC鍵結(jié)束輸入
esc
#輸入:wq! 強(qiáng)制保存并退出
:wq!
4)給該bash文件授權(quán)(很重要)浅役;
#添加可執(zhí)行權(quán)限
chmod +x /etc/rc.d/jar_multi_start.sh
說明:執(zhí)行的jar中,有需要寫日志的伶唯,也需要把日志文件所在的文件夾進(jìn)行授權(quán);
5)添加到開機(jī)啟動(dòng)文件/etc/rc.d/rc.local中(非常重要)乳幸;
/etc/rc.d/jar_multi_start.sh
說明:使用vim指令寫入到開機(jī)啟動(dòng)文件中瞪讼,這里省略。