您好,登錄后才能下訂單哦!
小編給大家分享一下怎么使用Shell腳本啟動/停止Java的jar程序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
#!/bin/sh nohup java -jar UploadSchedule.jar >> /usr/local/tomcat9/webapps/upload-to-oss/nohup_upload.out 2>&1 & echo $! > /var/run/UploadSchedule.pid
啟動腳本說明:
1、開啟后臺執行,并將程序產生的日志文件寫入out文件;
2、將當前進程id寫入/var/run/UploadSchedule.pid,以供在停止腳本中使用此pid來停止當前進程。
#!/bin/sh PID=$(cat /var/run/UploadSchedule.pid) kill -9 $PID
停止腳本說明:
1、首先獲取進程id;
2、然后殺掉該進程。
程序不中斷,一直在后臺運行,那么產生的log也會持續輸出到out問價,導致out文件越來越大。當需要根據out文件進行一些日志查找的時候,非常不方便。所以定期對out文件進行切分,按日期將當日out文件切分成若干小文件,從而方便處理及錯誤查找定位。
#!/bin/bash log_path=/usr/local/tomcat9/webapps/upload-to-oss if [ -f "$log_path/nohup_upload.out" ];then current_date=`date -d "-1 day" "+%Y%m%d"` cp $log_path/nohup_upload.out $log_path/nohup_upload_${current_date}.out cat /dev/null > $log_path/nohup_upload.out split -b 5242880 -d -a 4 $log_path/nohup_upload_${current_date}.out $log_path/nohup_upload_${current_date}_ rm -rf $log_path/nohup_upload_${current_date}.out fi
切分腳本說明:
1、如果out文件存在,將nohup_upload.out文件復制一份,命名為nohup_upload_當前日期(比如nohup_upload_20200328.out);
2、將nohup_upload.out文件清空;
3、對nohup_upload_20200328.out文件進行切分,切分后的文件命名格式為nohup_upload_20200328_0001,nohup_upload_20200328_0002;
-b 指定每個小文件的大小(單位byte)
-d 以數字作為后綴
-a 指定后綴的長度
4、將原文件(nohup_upload_20200328.out)刪除。
# 啟動 ./start_upload.sh # 停止 ./stop_upload.sh
&和nohup區別:
&的意思是在后臺運行。意思是說, 當你在執行 ./start_upload.sh & 的時候, 即使你用Ctrl + C, 那么start_upload.sh照樣運行(因為對SIGINT信號免疫)。 但是要注意, 如果你直接關掉Shell后, 那么, start_upload.sh進程同樣消失。 因為對SIGHUP信號不免疫。
nohup的意思是忽略SIGHUP信號, 所以當運行nohup ./start_upload.sh的時候, 關閉Shell,start_upload.sh進程還是存在的(對SIGHUP信號免疫)。 但是如果你直接在Shell中用Ctrl + C, 那么,start_upload.sh進程也是會消失的(因為對SIGINT信號不免疫)
所以,要讓進程真正不受Shell中Ctrl + C和Shell關閉的影響, 就用nohup和&同時用。
以上是“怎么使用Shell腳本啟動/停止Java的jar程序”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。