web-dev-qa-db-ja.com

nginx.serviceの開始に失敗しました:対話型認証が必要です。 crontab

crontabが停止している場合、それを開始するようにnginxを作成しようとしています。

私はググってこれら二つのスクリプトを見つけた

http://www.akamaras.com/linux/linux-script-to-check-if-a-service-is-running-and-start-it-if-its-stopped/

#!/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およびサービスを開始しません。

その後、デジタルオーシャンで別のスクリプトを見つけました

https://www.digitalocean.com/community/tutorials/how-to-use-a-simple-bash-script-to-restart-server-programs

#!/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.

誰か私がこれを修正する方法を知っていますか?

アドバイスを事前にありがとう。

2
Dora

あなたが使用しようとしていたそれらのスクリプトは時代遅れであり、systemdを備えた最新のシステムでは使用すべきではありません。

代わりに次のようなスクリプトを試してください。

#!/bin/bash
if ! systemctl is-active nginx >/dev/null ; then
    systemctl start nginx
fi

しかし、それはひどく厄介なハッカーおそらく必要ないので、 beforeあなたがそれをする、試してみてください systemdがnginxを自動的に再起動する もしそうなら停止します。 systemdドロップイン でそれを行います:

[Service]
Restart=always

ファイル/etc/systemd/system/nginx.service.d/override.confとして配置します(存在しない場合はディレクトリを作成します)。 systemctl edit nginxを使用してファイルを作成することもできます。

そしてもちろん、systemdドロップインを作成するか、このスクリプトをcrontabに配置することは、ルートとして実行する必要があります(長時間実行するルートシェルの場合はSudo -iを使用してください)。

3
Michael Hampton

これをcron経由で実行しないでください。

Nginx自体は非常に安定しており、理由なくサービスを停止するだけではありません。ただし、アプリケーションを使用して不安定にすることもできます。アプリケーションが不安定な場合は、try-restart毎時、毎日、毎週、何でも。

Cronが起動するまで約30秒待機するよりも停止は少なくなります。高トラフィックが発生した場合に不安定な状態が発生しても、夜間に再起動できます。

おそらく、メンテナンスのためにnginxを停止し、作業の途中でcronが開始することに驚かされる可能性があります。

環境が非常に不安定な場合は、ペースメーカークラスターについて検討してください。

また、アプリケーションのバグを修正するための作業/専門家なので、1か月はハングアップしたり、死んだりすることなく実行できます。

2
kubanczyk