![进程监控脚本bash,如何添加以下等待时间,间隔和日志功能](https://linux22.com/image/736690/%E8%BF%9B%E7%A8%8B%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%ACbash%EF%BC%8C%E5%A6%82%E4%BD%95%E6%B7%BB%E5%8A%A0%E4%BB%A5%E4%B8%8B%E7%AD%89%E5%BE%85%E6%97%B6%E9%97%B4%EF%BC%8C%E9%97%B4%E9%9A%94%E5%92%8C%E6%97%A5%E5%BF%97%E5%8A%9F%E8%83%BD.png)
我正在使用下面的脚本来监视 Linux 上的某些进程,如果进程关闭则重新启动并发送电子邮件。
我想在这个脚本中添加以下改进,在这种情况下我需要帮助。有人能帮忙举个例子吗
- 尝试重启服务之间等待的秒数
- 放弃前的尝试次数
- 检查间隔(秒)
- 在发生事件时生成日志。
当前脚本:
###edit the following
export smtp=smtprelay.domainname.com:25
service=splunk
[email protected]
###You can provide multiple mail ID's above in email variable separated by commas
###stop editing
host=`hostname -f`
if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 2 ))
then
echo "$service is running"
else
/opt/splunk/bin/$service restart
if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 2 ))
then
subject="$service at $host has been started"
echo "$service at $host wasn't running and has been started" | mailx -s "$subject" $email
else
subject="$service at $host is not running"
echo "$service at $host is stopped and cannot be started!!!" | mailx -s "$subject" $email
fi
fi
答案1
- 您需要几个变量用于尝试计数器和超时。
- 将这些值写入
/etc/sysconfig/
目录中的某个文件(/etc/default/
在其他发行版中)并将其包含到您的脚本中。 - 用于
sleep
等待超时。 - 使用
logger
实用程序将数据写入系统日志。 - 最复杂的部分是启动服务,如果超时则中止启动。最好使用
daemon()
函数(start-stop-daemon
其他发行版中的实用程序)。