组里有个任务,需要每隔15分钟去请求一个接口,我写了个脚本每隔15分钟去调用接口,但是该接口,token过期时间是一个小时,所以需要写个定时任务,每隔1个小时去重启一次调接口的那个脚本
调接口的脚本很简单,写shell就行了,首先根据该js脚本的名字,获取对应的进程
kill -9 $(ps -ef |grep "1_互联网电视业务性能劣化故障识别.js" |grep -v "grep" |awk '{print $2}')
这里的后面的|grep -v “grep” 是把grep给过滤掉
然后用nohup重启
nohup node /home/9day_script/1_互联网电视业务性能劣化故障识别.js >/home/9day_script/hcc1.log &
这里脚本路径和输出log的路径,最好设置成绝对路径
最上面记得source一下,我一开始没写这个,脚本没有执行,不知道是不是这个的原因
source /etc/profile
完整的脚本代码如下
#!/bin/bash
source /etc/profile
kill -9 $(ps -ef |grep "1_互联网电视业务性能劣化故障识别.js" |grep -v "grep" |awk '{print $2}')
nohup node /home/9day_script/1_互联网电视业务性能劣化故障识别.js >/home/9day_script/hcc1.log &
kill -9 $(ps -ef |grep "2_互联网电视业务中断故障识别.js" |grep -v "grep" |awk '{print $2}')
nohup node /home/9day_script/2_互联网电视业务中断故障识别.js >/home/9day_script/hcc2.log &
kill -9 $(ps -ef |grep "3_互联网电视关联EPG质量问题识别.js" |grep -v "grep" |awk '{print $2}')
nohup node /home/9day_script/3_互联网电视关联EPG质量问题识别.js >/home/9day_script/hcc3.log &
kill -9 $(ps -ef |grep "4_互联网电视关联OTT和CDN质量问题识别.js" |grep -v "grep" |awk '{print $2}')
nohup node /home/9day_script/4_互联网电视关联OTT和CDN质量问题识别.js >/home/9day_script/hcc4.log &
输入crontab -e 可以修改定时任务,相当于vim一样,也可以看到当前有哪些定时任务
crontab -e
然后因为接口的token一个小时过期,所以我得每隔一个小时去重启
0 * * * * /bin/bash /usr/local/vixtel/logeye/mongo/scripts/startup2.sh
一开始我写成了
* */1 * * * /bin/bash /usr/local/vixtel/logeye/mongo/scripts/startup2.sh
结果变成了
查看定时任务状态
tail -f /var/log/cron
看图片,可以看到每分钟重启一次,原因是因为第一个写成了*,改成0就好了,改完后记得重启crond,将修改生效
service crond restart
关于crontab的详细设置和小工具,可以参考
https://tool.lu/crontab
这里面写的很详细,也可以修改参数现场模拟
最后我的定时任务修改成功了,可以看到只在整点才重启了
脚本也是正常运行的了