2017-11-13 10 views
0

私のVPSでrootユーザー用に次のcronjobが設定されています。私はルートユーザーとしてそれを実行する場合、コマンド自体は正常に動作します。rootユーザーで実行されていないCronjob

30 2 * * * service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null 

SSL証明書が更新されていないことがわかりましたが、動作しません。

私はcat /var/log/cronを実行する場合、私はそれが走っ示しているようだが、はっきりとそれはそれはになって何行っていなかった以下の

Nov 13 02:30:01 server CROND[2307]: (root) CMD (service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null) 

を見ることができます。

通常のユーザーの他のcronjobは正常に動作しているようですが、このcronのNginxを一時的に停止する必要があるため、そのユーザーをcronsに使用することはできません。

これをさらにデバッグして並べ替える方法に関するアイデアはありますか?

*編集:*

私はそれがログインするために実行してみましたし、次のエラーが/bin/sh: service: command not found

+0

/dev/nullの代わりにログファイルに直接出力します。何を手に入れますか? – TurtlesAllTheWayDown

+0

@TurtlesAllTheWayDown私の編集を参照してください。 – Shiv

+0

コマンドリストをカッコで囲んで、組み合わせた出力をログファイルにリダイレクトする必要があります。 –

答えて

0

問題は、私が持っていたので、serviceコマンドはcronsのPATHにないということだったログに示されました/sbin/serviceの完全なパスを使用します。私の最後のcronコマンドを意味

は今働いている

30 2 * * * (/sbin/service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && /sbin/service nginx start) > /dev/null 2>&1 

ました。

一般的なルールのように、シェルコマンドのフルパスを指定するのがベストプラクティスです。

関連する問題