使用Shell腳本如何啟動/停止Java的jar程序
本文介紹如何使用Shell腳本來開啟和停止jar程序的后臺運行,以及如何實現(xiàn)out大文件的切分。另外,補充一些后臺運行的小知識。
啟動腳本:start_upload.sh
#!/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、開啟后臺執(zhí)行,并將程序產(chǎn)生的日志文件寫入out文件;
2、將當前進程id寫入/var/run/UploadSchedule.pid,以供在停止腳本中使用此pid來停止當前進程。
停止腳本:stop_upload.sh
#!/bin/sh PID=$(cat /var/run/UploadSchedule.pid) kill -9 $PID
停止腳本說明:
1、首先獲取進程id;
2、然后殺掉該進程。
文件切分:split_nohup.sh
程序不中斷,一直在后臺運行,那么產(chǎn)生的log也會持續(xù)輸出到out問價,導(dǎo)致out文件越來越大。當需要根據(jù)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文件復(fù)制一份,命名為nohup_upload_當前日期(比如nohup_upload_20200328.out);
2、將nohup_upload.out文件清空;
3、對nohup_upload_20200328.out文件進行切分,切分后的文件命名格式為nohup_upload_20200328_0001,nohup_upload_20200328_0002;
- -b 指定每個小文件的大?。▎挝籦yte)
- -d 以數(shù)字作為后綴
- -a 指定后綴的長度
4、將原文件(nohup_upload_20200328.out)刪除。
執(zhí)行開啟/停止命令
# 啟動 ./start_upload.sh # 停止 ./stop_upload.sh
一些后臺運行的小知識
&和nohup區(qū)別:
&的意思是在后臺運行。意思是說, 當你在執(zhí)行 ./start_upload.sh & 的時候, 即使你用Ctrl + C, 那么start_upload.sh照樣運行(因為對SIGINT信號免疫)。 但是要注意, 如果你直接關(guān)掉Shell后, 那么, start_upload.sh進程同樣消失。 因為對SIGHUP信號不免疫。
nohup的意思是忽略SIGHUP信號, 所以當運行nohup ./start_upload.sh的時候, 關(guān)閉Shell,start_upload.sh進程還是存在的(對SIGHUP信號免疫)。 但是如果你直接在Shell中用Ctrl + C, 那么,start_upload.sh進程也是會消失的(因為對SIGINT信號不免疫)
所以,要讓進程真正不受Shell中Ctrl + C和Shell關(guān)閉的影響, 就用nohup和&同時用。
到此這篇關(guān)于使用Shell腳本如何啟動/停止Java的jar程序的文章就介紹到這了,更多相關(guān)Shell 啟動停止jar程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux shell數(shù)組與關(guān)聯(lián)數(shù)組的用法實例
今天小編就為大家分享一篇關(guān)于Linux shell數(shù)組與關(guān)聯(lián)數(shù)組的用法實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02linux?shell中Grep命令查找多個字符串(grep同時匹配多個關(guān)鍵字或任意關(guān)鍵字)
grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來,下面這篇文章主要給大家介紹了關(guān)于linux?shell中Grep命令查找多個字符串(grep同時匹配多個關(guān)鍵字或任意關(guān)鍵字)的相關(guān)資料,需要的朋友可以參考下2022-08-08Linux Shell腳本系列教程(七):腳本調(diào)試
這篇文章主要介紹了Linux Shell腳本系列教程(七):腳本調(diào)試,本文講解了Bash內(nèi)建調(diào)試功能和自定義調(diào)試功能等內(nèi)容,需要的朋友可以參考下2015-06-06Impala-shell命令參數(shù)的實現(xiàn)
這篇文章主要介紹了Impala-shell命令參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12