[英]Monit script not working to restart service
这是我的第一篇文章,所以请耐心等待!
我试图创建脚本来检查服务是否无法访问(http错误代码),然后Monit应该重新启动程序(预览服务)。 Monit以“ spark”用户身份运行。
这是phantomjs-check.sh代码:
#!/bin/bash
# source: /opt/monit/bin/phantomjs-check.sh
url="localhost:9001/preview/phantomjs"
response=$(curl -sL -w "%{http_code}\\n" $url | grep 200)
if [ "$response" = "}200" ]
then
echo "-= Toimii!!!! =-"
exit 1
else
echo "-= RiKKi!!!! =-"
exit 0
fi
[root@s-preview-1 bin]#
如果我手动终止Previewservice并运行该脚本,则会得到退出代码0,这应该是这样的。
在Monit中,我有以下conf:
check program phantomjs with path "/opt/monit/bin/phantomjs-check.sh"
if status = 0 then exec "/opt/monit/bin/testi.sh"
目前,我向其中添加了一些日志记录,这是test.sh代码:
#!/bin/sh
# source: /opt/monit/bin/testi.sh
############# Added this for loggin purposes ############
#########################################################
dt=$(date '+%d/%m/%Y %H:%M:%S');
echo Testi.sh run at $dt >> /tmp/testi.txt
# Original part of the script
sudo bash /opt/previewservice/preview-service.sh start
在/ etc / sudoers文件中,我有一行:
spark ALL=(ALL) NOPASSWD: /opt/previewservice/preview-service.sh
该命令从cli开始工作,并启动/重新启动Previewservice。 我可以手动运行“ testi.sh”脚本作为spark [spark@s-preview-1 bin]$ ./testi.sh
,它可以按预期工作,但是即使[spark@s-preview-1 bin]$ ./testi.sh
也会得到该服务已关闭的信息,它也不会启动。
$ cat /tmp/testi.txt
Testi.sh run at 05/01/2018 10:30:04
Testi.sh run at 05/01/2018 10:31:04
Testi.sh run at 05/01/2018 10:31:26
$ cat /tmp/previews.txt
(此行是由preview-service.sh启动脚本创建的,因此已运行。
File created 05/01/2018 09:26:44
********************************
Preview-service.sh run at 05/01/2018 10:31:26
tail -f -n 1000 /opt/monit/logfile
显示以下内容
[EET Jan 5 10:29:04] error : 'phantomjs' '/opt/monit/bin/phantomjs-check.sh' failed with exit status (0) -- -= RiKKi!!!! =-
[EET Jan 5 10:29:04] info : 'phantomjs' exec: /opt/monit/bin/testi.sh
[EET Jan 5 10:30:04] error : 'phantomjs' '/opt/monit/bin/phantomjs-check.sh' failed with exit status (0) -- -= RiKKi!!!! =-
[EET Jan 5 10:30:04] info : 'phantomjs' exec: /opt/monit/bin/testi.sh
[EET Jan 5 10:31:04] error : 'phantomjs' '/opt/monit/bin/phantomjs-check.sh' failed with exit status (0) -- -= RiKKi!!!! =-
[EET Jan 5 10:31:04] info : 'phantomjs' exec: /opt/monit/bin/testi.sh
[EET Jan 5 10:32:04] error : 'phantomjs' '/opt/monit/bin/phantomjs-check.sh' failed with exit status (0) -- -= RiKKi!!!! =-
[EET Jan 5 10:32:04] info : 'phantomjs' exec: /opt/monit/bin/testi.sh
[EET Jan 5 10:33:04] info : 'phantomjs' status succeeded
最后一个成功的状态是当我不打扰地将testi.sh脚本作为spark运行时。
有什么提示我接下来应该尝试什么? 我感谢我能获得的所有帮助!
Monit通常以root用户身份运行。 是你的情况吗? 如果是,则可能不需要sudo部分。
考虑到脚本在Monit之外而不是在Monit之外工作之后,Monit具有自己的PATH环境变量,该变量非常小。 建议将脚本/ binairies的完整路径写为:
/usr/bin/sudo /bin/bash /opt/previewservice/preview-service.sh start
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.