小编给大家分享一下怎么使用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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。