gpt4 book ai didi

linux - Monit 脚本无法重新启动服务

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:32 25 4
gpt4 key购买 nike

这是我的第一篇文章,请耐心等待!

我已经尝试创建脚本来检查服务是否无法访问(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 中我有以下配置:

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 并且它按预期工作,但即使 Monit 也得到信息表明服务已关闭它没有开始。

$ 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

当我在没有 sudo 的情况下将 testi.sh 脚本作为 spark 运行时,最后一个状态成功。

我接下来应该尝试什么提示?我很感激能得到的所有帮助!

最佳答案

Monit 通常以 root 用户运行。是你的情况吗?如果是,您可能不需要 sudo 部分。

考虑到您的脚本在 Monit 之外而不是在 Monit 中工作,Monit 拥有自己的非常小的 PATH 环境变量。建议将脚本/二进制文件的完整路径写为:

/usr/bin/sudo /bin/bash /opt/previewservice/preview-service.sh start

关于linux - Monit 脚本无法重新启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com