クローンジョブが実行されていないか成功していませんか?

クローンジョブが実行されていないか成功していませんか?

リモートデータベースのローカルコピーを維持するために複数のcronタスクを設定しました。

最初は、毎日実行され、正常に動作するリモートコンピュータから最新バージョンのデータベースをダウンロードします。

2番目はダウンロードしたデータを取得しますが、機能しません。

これは単純なシェルスクリプトです。

#!/bin/bash
mysql -u root -mypass -h localhost my_db < my_db.sql

cron ジョブは次のように設定されます。

0 8 * * * bash /home/lampadmin/cron/my_db.sh

シェルスクリプトを手動で実行すると正常に動作します。

機能しない理由をcronで調べるにはどうすればよいですか?

答え1

Bash を削除するには:

0 8 * * * /home/lampadmin/cron/my_db.sh

また、 my_db.sh が実行可能であることを確認してください。

chmod a+x /home/lampadmin/cron/my_db.sh

答え2

このファイルを誰もが実行できるようにするのは気にしません。私はこれをあなたの最初のアイデアに近づけようとします。

0 8 * * * /bin/bash /home/lampadmin/cron/my_db.sh

コマンドを実行するには、常にフルパスを使用することをお勧めします。そうでなければ、あなたは何を得るのか決してわかりません。したがって、my_db.sqlファイルへのフルパスも提供する必要がありますmy_db.sh

しかし、それ以外の場合は、コマンドラインでパスワードを設定することについてより悪い感情を感じます。psスクリプトが実行されると、ルートパスワードがすべてのユーザーに表示されます。

.my.cnfこのようなファイルでパスワードを設定することをお勧めします

[mysql]
user=root
password=rootpassword

そのユーザーのホームディレクトリにあります。この方法が要件と比較して一般的すぎる場合は、追加ファイルに入れて/home/lampadmin/cron/my.cnfこの設定を使用できます。

/usr/bin/mysql --defaults-extra-file=/home/lampadin/cron/my.cnf -h localhost mydb < /pathto/my_db.sql

いかなる場合でも、お客様のmy.cnfパスワードは、そのパスワードにアクセスできるユーザーによってのみ保護されます。使用する必要があります

chmod go-rwx my.cnf

これを達成するために。

関連情報