linux下求写一个自动重启某服务的脚本,不胜感激!

发布网友 发布时间:2022-04-24 04:57

我来回答

2个回答

热心网友 时间:2023-07-06 22:30

【--------------------------------start of script -------------------------------】

#!/bin/bash
# 运行记录日志
runlog=/var/test/test.log
# 切换到脚本的工作目录
cd /var/test
# 首先以正常的方式(尝试)结束掉test服务的进程,静默结束
pgrep test |xargs kill -15 &>/dev/null
# 休息1秒,让出1秒时间充分地停止进程
sleep 1
# 检查一下test有没有被成功的结束,首先判断一下执行kill -15以后是否残留有test服务的进程
processnum=$(pgrep test |wc -l)
# 如果test进程数量大于0,则自动让脚本采用强制进程结束的方式快速终止test进程;
if [[ "$processnum" -gt "0" ]];then
pgrep test |xargs kill -9 &>/dev/null
# 发送wait指令,kill -9 一旦执行完毕脚本立刻执行接下来的操作
wait
fi
# 记录停止服务的时间,时间格式的呈现:11/30/13 06:25:37
echo "$(date +"%D %T") service test stoped" >>$runlog
# 执行你的启动命令 ,静默启动
./test ./test.lua &>/dev/null
# 休息1秒,让出1秒时间充分地让test进程启动完毕
sleep 1
# 统计启动命令执行后test进程的数量
processnum=$(pgrep test |wc -l)
# 如果进程的数量大于0,记录服务成功启动;
if [[ "$processnum" -gt "0" ]];then
echo "$(date +"%D %T") service test start sucess" >>$runlog
# 否则(进程数量等于0),记录服务启动失败;
else
echo "$(date +"%D %T") service test start fail" >>$runlog
fi

【----------------------------end of script -----------------------------】
将上述代码存入到test.sh

在系统的crontab里面加入 00 00,12 * * * /var/test/test.sh &>/dev/null ,便捷的方法:echo '00 00,12 * * * /var/test/test.sh &>/dev/null' >>/var/spool/cron/*** , ***用能够有权限执行test.sh的用户的账号名称替代(如果不是root用户,那么要确保你调用的用户的SHELL环境变量是/bin/bash或者是/bin/sh),比如使用root, echo '00 00,12 * * * /var/test/test.sh &>/dev/null' >>/var/spool/cron/root

热心网友 时间:2023-07-06 22:31

restart.sh:

date
cd /var/test
pid=`ps -e|grep test | grep -v grep | awk '{print $1'}`
kill -15 $pid
sleep 2
./test ./test.lua 
echo "restart end, return $?, `date`"

然后执行 crontab -e 增加下面这行:

0 0,12 * * *  restart_test.sh > /var/test/restart_test.log

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com