Linux
啟動 nginx.service 失敗:需要互動式身份驗證。使用 crontab
如果它停止,我正在嘗試
crontab
啟動。nginx
我用Google搜尋並找到了這兩個腳本
#!/bin/bash service=replace_me_with_a_valid_service if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 )) then echo "$service is running!!!" else /etc/init.d/$service start fi
不知何故,如果我手動執行它,即使服務停止,它也會
source scriptName
在我添加它之後正常工作,它會繼續回顯並且不會啟動服務。crontab``nginx is running
然後我在數字海洋中找到了另一個腳本
#!/bin/sh ps auxw | grep nginx | grep -v grep > /dev/null if [ $? != 0 ] then /etc/init.d/nginx start > /dev/null fi
如果我手動執行它,它會再次工作,但它會詢問使用者密碼
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to start 'nginx.service'. Authenticating as: abc,,, (abc)
在我輸入密碼
==== AUTHENTICATION COMPLETE ===
後將顯示並啟動nginx
然後我將腳本添加到 crontab 中…我得到這個權限錯誤
Failed to start nginx.service: Interactive authentication required.
有誰知道我該如何解決這個問題?
提前感謝您的任何建議。
您一直嘗試使用的那些腳本已經過時,不應該在帶有 systemd 的現代系統上使用。
試試這樣的腳本:
#!/bin/bash if ! systemctl is-active nginx >/dev/null ; then systemctl start nginx fi
但是,這是一些非常討厭的hackery,可能沒有必要,所以在你這樣做之前,嘗試讓systemd在它停止時自動重啟nginx。使用systemd 外掛來做到這一點:
[Service] Restart=always
您將其作為文件放置
/etc/systemd/system/nginx.service.d/override.conf
(如果目錄不存在,則創建目錄)。您也可以使用systemctl edit nginx
來創建文件。當然,無論是創建 systemd 外掛,還是將此腳本放在 crontab 中,都必須以 root 身份完成(嘗試使用
sudo -i
長時間執行的 root shell)。