Linux定时任务启动Java项目脚本

例:jar包名叫admin.jar,所在路径:/root/java/project

1.进入到jar包位置

cd /root/java/project

2.创建脚本文件autoRestart.sh

touch autoRestart.sh

3.将.sh文件变为可执行文件

chmod -R 777 autoRestart.sh

4.使用vim autoRestart.sh 进入脚本文件,注意:shell脚本中必须要有#!/bin/bash,否则shell脚本无法执行,下面是脚本内容

#!/bin/bash
source /etc/profile
sleep 1

pid=$(ps -ef | grep admin.jar| grep -v 'grep' | awk '{print $2}')
echo $(date +%F%n%T) "kill admin $pid begin"
kill -9 $pid
echo $(date +%F%n%T) "kill admin ok"
#休眠两秒再启动
sleep 2
echo $(date +%F%n%T) "restart admin begin"

#注意:下面这行是启动jar包的命令,请自行根据各自jar包启动来修改本处命令
nohup java -jar /root/java/project/admin.jar  --spring.profiles.active=prod>/dev/null &
processID=$(ps -ef | grep admin.jar| grep -v 'grep' | awk '{print $2}')
echo $(date +%F%n%T) "restart success admin $processID"

脚本编写完成后,可使用 sh autoRestart.sh 或 ./autoRestart.sh 来测试一下脚本文件是否可以执行成功。如果报错:bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory

解决:执行命令:sed -i “s/\r//” autoRestart.sh

目的:将脚本文件的文件编码dos格式变为Linux相关的unix格式

编辑定时任务文件

crontab -e

6.添加每两小时执行一次(crontab定时任务中文件需使用绝对路径)

0 */2 * * * /root/java/project/autoRestart.sh >/root/java/project/logs/restart.log 2>&1 &

7.按下ESC退出编辑后,再按:wq 保存编辑,退出页面

8.重新加载crond服务

systemctl reload crond.service

到这里就完成了,项目每隔两小时重启一次。

附上一个Linux生成cron表达式网站:https://crontab.guru/,长这样:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Linux 上,你可以使用 cron 来实现定时更新 jar 项目脚本。 首先,编写脚本文件,例如 update.sh: ``` #!/bin/bash cd /path/to/your/project git pull origin master mvn clean install ``` 然后,设置 cron: ``` crontab -e ``` 在文件末尾添加以下内容: ``` 0 0 * * * /bin/bash /path/to/your/project/update.sh ``` 这样,每天 0 点,系统就会自动执行 update.sh 脚本,更新 jar 项目。 ### 回答2: 为了编写一个定时更新jar项目脚本,我们可以使用Shell脚本编程语言。下面是一个示例脚本: ```shell #!/bin/bash # 定义要更新的jar包的路径 JAR_PATH="/path/to/your/jar" # 定义定时更新的时间间隔(以秒为单位) UPDATE_INTERVAL=3600 # 每小时更新一次 # 循环执行更新操作 while true; do # 停止当前正在运行的jar进程 PID=$(pgrep -f myapp.jar) if [[ -n $PID ]]; then kill $PID sleep 5 fi # 删除旧的jar文件,并将新的jar文件复制到指定路径 rm -f $JAR_PATH/*.jar cp /path/to/new/jar/*.jar $JAR_PATH # 启动新的jar进程 nohup java -jar $JAR_PATH/*.jar > /dev/null 2>&1 & # 等待更新间隔 sleep $UPDATE_INTERVAL done ``` 这个脚本将会每隔一小时执行一次更新操作。它首先会停止当前正在运行的jar进程(如果有的话),然后删除旧的jar文件,并将新的jar文件复制到指定路径。最后,它会启动新的jar进程来运行更新后的代码。 请注意,你需要将代码中的`/path/to/your/jar`替换为你实际的jar文件路径,并将`/path/to/new/jar`替换为你用于更新的新jar文件的路径。 你可以将这个脚本保存为一个.sh文件,并使用`chmod +x script.sh`命令将其设置为可执行文件。然后,你可以使用`./script.sh`命令来运行它。如果你希望脚本在后台运行,并且不受终端关闭的影响,你可以使用`nohup ./script.sh &`命令来运行它。 ### 回答3: 编写一个定时更新jar项目脚本可以采用Shell脚本来实现。以下是一个示例: ``` #!/bin/bash # 检查项目目录是否存在 if [ ! -d "/path/to/project" ]; then echo "项目目录不存在" exit 1 fi # 切换到项目目录 cd /path/to/project # 备份旧的jar文件 if [ -f "myproject.jar" ]; then cp myproject.jar myproject_$(date +%Y%m%d%H%M%S).jar fi # 下载最新的jar文件 wget -O myproject.jar https://example.com/myproject.jar # 检查下载是否成功 if [ $? -ne 0 ]; then echo "下载最新的jar文件失败" exit 1 fi # 杀死旧的进程 pid=$(pgrep -f myproject.jar) kill $pid # 启动新的进程 java -jar myproject.jar & echo "项目更新完成" ``` 以上脚本实现的功能是,先检查项目目录是否存在,如果不存在则退出,如果存在则进入该目录。 然后,备份旧的jar文件,如果存在的话。 接着,使用wget命令下载最新的jar文件并保存为myproject.jar。 下载完成后,检查下载是否成功,如果不成功则退出。 接下来,通过pgrep命令获取旧的进程的PID,并使用kill命令杀死该进程。 最后,使用java命令启动新的进程,并在后台运行。 在脚本执行完毕后,会输出"项目更新完成"的提示信息。 注意,以上只是一个示例脚本,请根据实际情况修改脚本中的项目目录、jar文件名以及下载链接等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值