いくつかのバックアップ設定をテストしています。毎分crontabを実行するように設定しました。バックアップをアップロードするmachine2にディスクがマウントされています。
フォルダの内容を/home/user/important
圧縮important.tar.gz
し、tar.gzファイルをmachine2の/mnt/backup2
フォルダに移動しました。
クローンタブ項目:
* * * * * tar -czvf /home/user/important/important.tar.gz /home/user/important &&
rsync -vzhe ssh /home/user/important/*.tar* machine2:/mnt/backup2
crontabでは実行されません。
端末で同じコマンドを実行します。それはうまくいきます:
/home/user/important/
/home/user/important/a.txt
/home/user/important/test.txt
/home/user/important/this.txt
/home/user/important/is.txt
/home/user/important/important.tar.gz
/home/user/important/important.txt
/home/user/important/test1/
important.tar.gz
sent 9.85K bytes received 35 bytes 19.76K bytes/sec
total size is 9.75K speedup is 0.99
ファイルは machine2 の /mnt/backup2 フォルダーに受け取ります。
crontabで動作しない理由の提案がありますか?私はUbuntuを実行しています。
答え1
実際の問題が何であるかを知ることは困難ですが、試してみる方法はいくつかあります。
- この1行のコードをスクリプトに入れ、
chmod -x
crontabで使用してください。
これにより、進行中の操作(例:set -x
など)をより適切に制御できます。
- デバッグ出力を有効にして、crontabエントリが期待どおりに機能しない原因を特定してください。
#!/bin/bash -x
またはあなたが使用している場合sh
#!/bin/sh -x
または直接使用してくださいset -x
。
権限やシェルのグロービングの問題かもしれないと思いますが、スクリプトで解決できない場合は、次のことを行う必要があります。
script.sh &> script.log
したがって、cronjobで実行すると、何かとそれがどのように失敗したかを明確に見ることができます。
- アイテムがあることを確認してください。
crontab
これは明らかですが、一部のユーザーは次のようにcrontab
直接追加する代わりにこのファイルを使用できますcrontab
。
echo "job entry" | crontab -
または、「一般的な」方法ですが、テキストエディタを開き、ユーザーがジョブ/crontabエントリを手動でコピーして貼り付け/入力する必要があります。
crontab
または二重入力を防ぐ方法を好む場合:
cronadd() {
if crontab -l | grep -wq -- "$@"; then
:
else
(crontab -l 2>/dev/null; echo "$@") | crontab -
fi
}
次のように使用できます。
cronadd "job entry here"
重複したジョブが追加されるのを防ぐ必要があり、実際に追加されたことを確認できますがcrontab -l
…
答え2
すべての良い答えに感謝します。私は次まですべてを試しました。
「権限またはシェルのグロービングの問題かもしれませんが、スクリプトで解決できない場合は、次のことを行う必要があります。script.sh&> script.log」
問題は権限にあります。 sudoでcrontabを実行していますが、これはいくつかの問題を引き起こします。 crontabにコマンドを追加すると、ユーザーとして実行されます。