Linux重启java服务脚本

文章介绍了如何使用脚本在SpringbootIoT项目中监控和管理启动的服务,如admin-center、mobile和SSM中的Tomcat,通过`grep`,`wc-l`,`awk`,和`xargs`命令查找并关闭相应端口的进程。

1.spingboiot项目基础版本

SUM=`ps -ef|grep admin-center-0.0.1-SNAPSHOT.jar|grep -v start|grep -v grep| wc -l`
if [ $SUM -gt 0 ];
 then
ps -ef|grep admin-center-0.0.1-SNAPSHOT.jar|grep -v start|grep -v grep|awk '{print $2}'|xargs kill -9
else
 echo "no exist"
fi
nohup /usr/local/jdk1.8.0_121/bin/java -jar -Dlog4j2.formatMsgNoLookups=true -Xms2048m -Xmx2048m   /pony/application/appcenter/admin-center-0.0.1-SNAPSHOT.jar > /pony/logs/appcenter/appcenter.log 2>&1 &

1.  grep -v grep排除包含grep内容的所有内容
2.  wc -l  显示所有符合条件的行数
1+2效果是查找smartcity-sociaty-center-0.0.1-SNAPSHOT.jar这个所有的行数,但是排除调grep,start所在的行
3.  | awk '{print $2}' 查找进程号   
4.  xargs 传递参数,将左边获得的参数传递给右边
3+4效果是查找出符合条件的进程,然后作为kill -9  需要的参数传入
5.  2>&1 1:代表标准输出文件 2:代表错误输出文件 2>&1 = 将错误文件也重定向到标准文件
6.  最后一个& 代表结尾,当前窗口不被锁定,但是 一般 nohup 都是要搭配 结尾&使用 
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件

2.spingboiot项目:   一个主机有多个同样的工程,使用不同端口号启动的

此时想要在脚本里同时查找所有相项目对应的进程号并全部关闭,就必须在打印进程号的语法上进行修改了,核心是这个 '{printf "%s ", $2}'

SUM=`ps -ef|grep mobile.jar |grep -v start|grep -v grep| wc -l`
if [ $SUM -gt 0 ];
 then
ps -ef|grep mobile.jar|grep -v start|grep -v grep|awk '{printf "%s ", $2}'|xargs kill -9
else
 echo "no exist"
fi


nohup /usr/local/jdk1.8.0_121/bin/java -jar -Dlog4j2.formatMsgNoLookups=true -Xms2048m -Xmx2048m  /pony/application/appcenter/mobile.jar > /pony/logs/appcenter/appcenter.log 2>&1 &

3. ssm项目

停止脚本如下,可以再根据实际需要补充启动工程命令

ps -ef|grep apache-tomcat-screen|grep -v grep|awk '{print $2}'|xargs kill -9      
           //grep -v start不需要,因为start是在目标里面包含了

Linux系统中实现定时重启Java脚本可以通过以下步骤完成: ### 1. 创建重启脚本 首先,需要创建一个用于停止和重启Java进程的脚本。假设Java程序是通过`java -jar`命令启动的,以下是一个示例脚本`restart_java.sh`: ```bash #!/bin/bash # 停止Java进程 # 获取Java进程的PID PID=$(ps -ef | grep java -jar | grep -v grep | awk '{print $2}') if [ -n "$PID" ]; then echo "Stopping Java process with PID: $PID" kill -9 $PID sleep 5 # 等待进程完全停止 fi # 重启Java进程 # 这里需要替换为实际的Java程序启动命令 nohup java -jar /path/to/your/java/app.jar > /dev/null 2>&1 & echo "Java process restarted." ``` 在上述脚本中,首先通过`ps`命令查找Java进程的PID,然后使用`kill -9`命令强制停止该进程。之后,使用`nohup`命令在后台重新启动Java程序。 ### 2. 设置脚本权限 创建好脚本后,需要为其添加执行权限: ```bash chmod +x restart_java.sh ``` ### 3. 使用`cron`进行定时任务设置 `cron`是Linux系统中用于定时执行任务的工具。可以通过编辑`crontab`文件来设置定时任务。 ```bash crontab -e ``` 在打开的文件中添加以下内容,例如,设置每天凌晨2点重启Java程序: ```plaintext 0 2 * * * /path/to/restart_java.sh ``` 上述`crontab`条目的含义是:在每天的凌晨2点(分钟为0,小时为2)执行`restart_java.sh`脚本。 `crontab`条目的格式为: ```plaintext 分钟 小时 日 月 周 命令 ``` - 分钟:取值范围0 - 59 - 小时:取值范围0 - 23 - 日:取值范围1 - 31 - 月:取值范围1 - 12 - 周:取值范围0 - 7(0和7都表示周日) 设置完成后,保存并退出`crontab`文件。`cron`会自动按照设置的时间执行重启脚本。 ### 4. 验证定时任务 可以通过以下命令查看当前的`crontab`任务: ```bash crontab -l ``` 确保添加的定时任务已经正确保存。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值