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
これが役立つ場合は教えてください。