crontabがあるサーバーでは実行されますが、別のサーバーでは実行されないのはなぜですか?

crontabがあるサーバーでは実行されますが、別のサーバーでは実行されないのはなぜですか?

linodeには2つのサーバーがあり、いくつかのウェブサイトがあります。サーバーでmysqlが実行されていることを確認し、そうでない場合は、スクリプトがmysqlを起動するスクリプトを作成しました。スクリプトは両方のサーバーにあり、ファイル構造は同じです。

両方のサーバーで "crontab -e"コマンドを使用してcronにスクリプトを追加しました。問題は、私の開発サーバーがスクリプトを実行し、本番サーバーが停止していることです。問題ではないことを知るために、crontabの末尾にスペースを追加しました。

本番サーバーでスクリプトを手動で実行すると、「('-p」に関する情報を読み取れません:geteuid()= 1000ですが、rootである必要があります)」というエラーが発生します。エラーが発生してもスクリプトはmysqlを再起動しますが、cronを使用してスクリプトを実行するとmysqlは再起動されません。また、開発サーバーでスクリプトを実行しましたが、同じエラーが発生しました。エラーがあっても、スクリプトはdevで実行され、cronを介して実行されるとmysqlを再起動します。

開発サーバーで sudo でコマンドを実行するとパスワードは要求されませんが、本番サーバーで実行するとパスワードが要求されます。

cronコマンドが実行されていることを確認するためにsyslogをチェックしました。

このスクリプトは、-v -u -l -n -t -pパラメーターとともにnetstatコマンドを使用します。

答え1

開発サーバーで sudo でコマンドを実行するとパスワードは要求されませんが、本番サーバーで実行するとパスワードが要求されます。

両方のノードのsudo構成を比較してみましたか? crontabを変更したアカウントで、両方のシステムでこのコマンドを実行します。

sudo -l

答え2

注意すべき点がいくつかあります。

visudoをrootとして実行し、ユーザーがリストされていることを確認します(ユーザー名を持つyouruser)。

ユーザー名 ALL=(ALL) NOPASSWD: ALL

これにより、パスワードなしでsudoを実行できます。そうでない場合は、それを追加してスクリプトを再試行してください。

まだcronとして実行されていない場合は、cronエントリが正しいように聞こえますが、スクリプトが正しくない可能性があります。システムログに表示されている内容に応じてクローンが実行されているようです。 chmod 755 /path/to/script.sh をお試しください。

クローンジョブをもう一度実行してみてください。

それでも実行されない場合は、スクリプトの所有者を確認してください。 chown ユーザー名/パス/to/script.sh

これが役立つ場合は教えてください。

関連情報