簡體   English   中英

Monit腳本無法重新啟動服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM