希望通过shell脚本去灵活地启动,关闭,重启jar包程序,且可以查看当前程序运行状态。这样可以提高运维效率,便于管理。 如执行如下命令,启动java程序:
应用背景
sh /home/zzworld/software_rel/softexe/javaweb_bin/start_java_test-web-all.sh start
shell脚本代码
#!/bin/bash #description: 启动重启server服务 #获取时间: yyyy-mm-dd day_id=$(date '+%Y-%m-%d') #应用名称,根据此名称确定PID exe_name='test-web-all.jar' #环境 env_the='prod' #应用所在目录 HOME='/home/zzworld/software_rel/softexe/javaweb' #log日志 log_name=${exe_name%.*} log_dir="/home/zzworld/software_rel/softexe/javaweb_log/${log_name}/zz_${log_name}_${day_id}.log" #查询应用pid,(ps是进程状态信息) pid=`ps -elf |grep $exe_name|grep -v grep |head -n 1 |awk '{printf $4}'` #通过pid获取端口号,(netstat,是网络连接相关信息,如套接字,端口,pid/应用名,等等) port=`netstat -anopt |grep $pid|head -n 1|awk '{printf $4}'|cut -d: -f4` start(){ if [ -n "$pid" ]; then echo "server already start,pid:$pid" return 0 fi #进入命令所在目录 echo "jar:$HOME/$exe_name ; log: $log_dir" cd $HOME nohup java -jar $HOME/$exe_name --spring.profiles.active=$env_the >> $log_dir 2>&1 & #启动程序, 把日志输出到log_dir文件 #查询应用pid,(ps是进程状态信息) pid=`ps -elf |grep ${exe_name}|grep -v grep |head -n 1 |awk '{printf $4}'` #sleep 15s #通过pid获取端口号,(netstat,是网络连接相关信息,如套接字,端口,pid/应用名,等等) port=`netstat -anopt |grep ${pid}|head -n 1|awk '{printf $4}'|cut -d: -f4` echo "start at port:${port},pid:$pid" } stop(){ if [ -z "$pid" ]; then echo "not find program on port:$port" return 0 fi #结束程序,使用讯号2,如果不行可以尝试讯号9强制结束 kill -9 $pid rm -rf $pid echo "kill program use signal 2,pid:$pid" } status(){ if [ -z "$pid" ]; then echo "not find program on port:$port" else echo "program is running,pid:$pid" fi } case $1 in start) start ;; stop) stop ;; restart) $0 stop sleep 2 $0 start ;; status) status ;; *) echo "Usage: {start|stop|status}" ;; esac exit 0
脚本说明
$(date '+%Y-%m-%d')
获取当前日期day_id,从而输出启动日志到程序对应地日志文件。ps -elf |grep $exe_name|grep -v grep |head -n 1 |awk '{printf $4}'
(参考:ps -elf 查看进程获取进程id)netstat -anopt |grep $pid|head -n 1|awk '{printf $4}'|cut -d: -f4
(参考:netstat -anp |awk |cut 通过pid获取应用程序的端口号)nohup java -jar $HOME/$exe_name --spring.profiles.active=$env_the >> $log_dir 2>&1 &
指令,
$HOME表示引用变量值,–spring是传入程序的参数,>>是重定向追加输出内容到目录log_dir, 2>$1
意思是将2
表示的错误流也定向到1
对应的标准流中,最后一个$
表示把该命令放到后台执行。case $1 in
是switch选择函数,通过执行命令传入不同参数start,stop,status,restart来表示启动,停止,查询状态,重启。exit 0
退出脚本
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算