🌿前言🌿:
🌿看见群里小伙伴说 服务总是异常停止,python程序太多 卡死,所以咋们可以使用定时任务来控制脚本重启jar服务🌿
🌿为了把它弄出来,好烧脑啊...
🌿因为今天心情不是very good 所以 就操作 no good
🌿🌿🌿🌿快上车.......🌿🌿🌿🌿🌿
🌿先说正确的姿势🌿
🌿直接贴脚本代码:🌿
#!/bin/bash
# “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
# 变量
jarName=demo-0.0.1-SNAPSHOT.jar
jarUrl=/opt/cdApp
# grep -v grep: 在文档中过滤掉包含有grep字符的行
# awk '{print $2}': 按空格截取第二个
pid=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'`
# wc -l: jar包进程的数量
num=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'| wc -l`
MonitorFunction(){
# 输出文本
echo "[info]进入监控脚本"`date +'%Y-%m-%d %H:%M:%S'`
# -eq: 等于
if [[ $num -eq 0 ]]; then
echo "[error]进程不存在,重启"`date +'%Y-%m-%d %H:%M:%S'`
# >> /dev/null : jar包生成日志不打印到此脚本日志中
source /etc/profile; nohup java -jar -Dserver.port=8888 $jarUrl/$jarName >log8889.log
fi
}
MonitorFunction
🌿定时任务的配置:🌿
🌿vim /etc/crontab🌿
*/1 * * * * root sh /opt/cdApp/startSH.sh >> /opt/cdApp/log.log 2>&1
配置root 用户操作的 脚本, 后面是输入的路径下日志 信息
*/1 * * * * root sh /opt/cdApp/startSH.sh >> /opt/cdApp/log.log 2>&1
🌿过程遇见的问题:🌿
🌿报错原因:🌿
因为是在windows环境编译的,在linux 上面需要修改对应格式不然就报错:
bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory
windows环境编译的sh脚本 上传linux 以后 需要修改它的编译格式:
set ff=unix : 告诉 vi 编辑器,使用unix换行符。
文件内 的底部 :set ff=unix 然后 :wq 退出
退出以后直接执行: chmod a+x sh脚本名称, 脚本变成可执行状态 才能定时任务.....
🌿定时任务相关简单命令:🌿
//编辑定时任务 crontab -e / 或者vim /etc/crontab(推荐) 就可以 直接生效 //查看定时器列表 crontab -l //刷新定时器配置 /sbin/service crond reload //定时器日志 tail -f /var/log/cron
service crond start 启动
service crond status 状态
crontab -r 删除定时任务
🌿定时任务执行正常, 脚本手动执行正常, 但是脚本加入定时任务以后不生效 : 🌿
这是定时任务配置输出的运行日志: 可以发现是跟环境有关
nohup: failed to run command 'java': No such file or directory
推荐在 使用这个命令的前面加上这个环境变量...
后台运行的这个指令 默认的操作用户 路径是不一样的...具体得去看看了 记不太清楚了
crontab 之所以使用的不是系统环境变量,好像就是 登录的方式不一致 login shell 与 non login shell 的原因
🌿本服务器的路径地址:🌿
🌿总结:🌿
1:🌿主要注意权限问题---->脚本不同操作系统环境格式问题--->系统默认环境变量配置问题🌿
2:🌿首先保证你的 定时任务可以执行, 你的脚本可以手动执行..🌿🌿🌿
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿突然感觉自己特别美!!!!🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿