Ubuntu 12.04でCronジョブが実行されていない


0

以下を使用して、Ubuntu 12.04のコンソールでcronジョブを作成しましたcrontab -e

10 09 * * * /home/ram-pc/Desktop/bala/personal/dump.sh

しかし、実行されていません。保存するとエラーなしで正しくインストールされcrontab -l、それを使用して表示するとcrontabが表示されますが、時間内に実行されません。

dump.shはデータベースのバックアップコマンドを含んでおり、個別に実行しようとすると、その.shファイルは正しく実行されます。

誰が問題を教えてもらえますか?

dump.shコードの内容は次のとおりです。

cd
cd Desktop/bala/personal
mkdir $(date +%Y%m%d)
cd $(date +%Y%m%d)
mysqldump -u root -p*** --all-databases |gzip -9  >database-$(date +%Y%m%d).sql.gz

cronジョブを午前9時10分に実行したいですか?そして、dampishファイルの内容を共有することは可能ですか?
JakeGould 14

はい私はdump.shを実行したい、時間は私が09.10午前で実行しようとした問題ではありませんが、それは動作していない
Sathaya

Cronログには何と書かれていますか?
Charm_quark 14

@Charm_Quark:iはログを調べ、cronのログファイルは作成されていません。var/ log /を調べました..
Sathaya 14

cronジョブの出力を問題のあるものにエクスポートします。例:10 09 * * * /home/ram-pc/Desktop/bala/personal/dump.sh >> / home / ram-pc / Desktop / bala / personal / cron.logおよびスクリプトの許可も確認します
Charm_quark 14

回答:


1

これはあなたのcronジョブであり、見栄えが良いです:

10 09 * * * /home/ram-pc/Desktop/bala/personal/dump.sh

毎日午前9時10分に発射するように設定します。ただし、スクリプトを見ると問題がわかります。

cd
cd Desktop/bala/personal
mkdir $(date +%Y%m%d)
cd $(date +%Y%m%d)
mysqldump -u root -p*** --all-databases |gzip -9 >database-$(date +%Y%m%d).sql.gz

cronジョブを実行すると、ユーザー(ユーザー)として実行されないため、バイナリファイルへのパスは読み込まれません。そのため、スクリプトはどこにあるのかわかりませんmysqldump。したがってwhich、フルパスが次のようになっているものを把握するために実行する必要があります。

which mysqldump

出力は次のようになります。ここに一般的な例を使用します:

/usr/local/bin/mysqldump

また、シェルがファイルを実行する環境を認識できるように、ファイルの最初の行としてスクリプト指定を追加する必要があります。また、cd以下cd Desktop/bala/personalはに簡略化できますcd ~/Desktop/bala/personal。したがって、まったく新しいスクリプトは次のようになります。

#!/usr/bin/env bash
cd ~/Desktop/bala/personal
mkdir $(date +%Y%m%d)
cd $(date +%Y%m%d)
/usr/local/bin/mysqldump -u root -p*** --all-databases |gzip -9 >database-$(date +%Y%m%d).sql.gz

コマンドラインから自分で実行して、動作するかどうかを確認してください。そして、もしそうなら、cronから再度実行します。


申し訳ありませんが、それはまた...実行されていなかった
Sathaya

:私はそれがなく、cronの中に、コマンドラインで実行していた、あなたの方法を試してみました...
Sathaya

0

以下のようにcronジョブをセットアップします。これにより、スクリプトの実行時にエラーとユーザー名もキャッチできます。例:charm_quark

  10 09 * * * charm_quark /home/ram-pc/Desktop/bala/personal/dump.sh >>  /home/ram-pc/Desktop/bala/personal/cron.log

また、許可と環境を確認してください

カスタムスクリプトを使用する前に、それが実行可能であることを確認し、cronによって設定された限られた環境変数セットでテストします。上記のcronエントリの実行に使用される環境を複製するには、次を使用します。

env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru /usr/home/dru/bin/mycustomscript.sh

リファレンス:第12章構成とチューニング

トラブルシューティング手順

  1. dump.shファイルを空にして、いくつかのエコーに置き換えます

    #!/usr/bin/env bash echo "this is a test" >> /home/ram-pc/Desktop/bala/personal/test.log

  2. .shファイルの許可を確認し、変更します。

    chmod 777 /home/ram-pc/Desktop/bala/personal/dump.sh

  3. crontabを更新してください

    * * * * * charm_quark /home/ram-pc/Desktop/bala/personal/dump.sh >> /home/ram-pc/Desktop/bala/personal/cron.log


申し訳ありませんが、それはまた、実行されていないと私はそれが正常に実行されているcronスクリプトしようcron.logは、エラーなし空である
Sathaya

同じ結果が来て、cron.logはデータを持たない
Sathaya

何test.logは全く作成されていないされていません
Sathaya

、crontab、スクリプト、およびファイルの許可を表示してください。
Charm_quark 14

777許可は良くありません。少なくとも755、ユーザーには読み取り、書き込み、実行は許可するが、グループや他のユーザーには読み取りと実行のみを許可する必要があります。これがユーザーのcronジョブである場合、これはcould 700索好きな目でMySQL資格情報を読み取れない可能性があり、またそうあるべきです。
JakeGould 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.