GNU/Linux >> Linux の 問題 >  >> Ubuntu

cronジョブが実行されていませんか?

Minecraftの世界をRAMから5分ごとに保存するためにcronジョブを作成していました。
スクリプトをテストしましたが、機能しているようです。

スクリプトは次のようになります。

#!/bin/sh


VOLATILE="/home/jonathan/Games/Minecraft/Server/world/"
PERMANENT="/home/jonathan/Games/Minecraft/Server/world_storage/"
rsync -r -t -v "$VOLATILE" "$PERMANENT"

そこで、5分ごとにスクリプトを実行するcronジョブを追加しましたが、実行されていないようです。

これは私が使用したスクリプトです:

*/5 * * * * bash /home/jonathan/Games/Minecraft/Server/Backup.sh

誰か助けてくれませんか?

承認された回答:

cronジョブを追加する方法を指定しませんでした。これは大きな違いになります。crontab -eを使用した場合 自分のアカウント内では、スクリプトはユーザーと一緒に実行されます(したがって、crontabエントリのフィールドは1つ少なくなります。つまり、実行するユーザーです)。上記のスニペットを/etc/cron.dにコピーしただけの場合 、ユーザーを指定しなかったため(つまり、「bash」という名前のユーザーが見つからなかったため)失敗します。したがって、次の手順を実行する必要があります。

  1. cronジョブを追加した方法に関する情報で質問を更新します
  2. システムログを確認します(/var/log/syslog;エラーの可能性を指摘する可能性があります)
  3. Backup.shにデバッグ出力を追加します 開始されたかどうかを確認するスクリプト

3番目のポイントは複数の方法で達成できます:

  • >>/tmp/testlog.logを追加します crontabエントリの最後まで(出力を調査可能なファイルにリダイレクトします。さらに、2>&1 エラーコンソールからの出力が含まれます)
  • スクリプト自体にいくつかの行を追加します。 echo "Backup.sh started">/tmp/testlog.log

さらに:スクリプトをbashを使用して実行することを意図しているため 、/bin/shを使用するように指示しないでください (これにより、dashが使用されます デフォルトのUbuntuインストールの場合)ではなく、/bin/bash 。次に、実行可能にします。crontabエントリから「bash」を省略することもできます。

更新:

私の回答に対するあなたのコメントによると、あなたはcrontab -eを使用しました ジョブを作成し、システムログによると実行されますが、定義はむしろ

*/5 * * * * bash /home/jonathan/Games/Minecraft/Server/Backup.sh &>/dev/null

これにより、すべての出力がシステム内の最大のストレージである「ブラックホール」にリダイレクトされます:/dev/null すべてを食べます(ただし、何も返しません)。この方法でSTDOUTとSTDERRをリダイレクトすると、エラーレポートが失われます。そのため、詳細は言うまでもなく、エラーが発生したことをまったく知ることができません。テストのために、&>/dev/nullを省略する必要があります 完全に分けます。それが機能する場合でも、不要な出力のみを抑制する必要があります。そうしないと、問題が発生したときにわからないためです。したがって、少なくともアンパサンドを除外して、Cronが発生したエラーを報告できるようにすることをお勧めします。

関連:4TB Seagate HDD用のUSBドックは、2.2TB未満のデータでのみ機能しますか?

さらに:出力がリダイレクトされたら(あなたの場合のように/dev/null )、最後に別のリダイレクトを追加しても、すべてがすでになくなっているため、結果は得られません。したがって、上記のアドバイスを「crontabエントリの最後に…を追加する」から「crontabエントリのそれを置き換える」に調整する必要があります😉


Ubuntu
  1. cronを使用してApt-getスクリプトをスケジュールしますか?

  2. スクリプト実行時の重複したcronジョブの管理

  3. Crontab の問題:パーセンテージを使用すると Cron ジョブが機能しない

  1. 毎週の cron ジョブをテストする

  2. $_GET パラメータを cron ジョブに渡す

  3. CronJob が実行されていません

  1. cronジョブの使用とポリシー

  2. 私のcronジョブが機能しません

  3. シバンまたはシバンではない