これはcrontabにあります(/ etc内)
ルートとしてファイルを編集しました。
スタンドアロンで実行するとスクリプトは正常に機能しますが、crontabでは機能しません。
@daily root /home/andy/bin/Backup_18_04.sh
Crontabのスクリプトに問題があるかどうかを判断するには、次のコマンドを使用してシステムログを確認する必要があります
less -S /var/log/syslog
cRON行を探し、関連するエラーメッセージを探します。
この分析を簡略化する別の方法は、次のようにcron定義に明示的なログファイルを追加することです。
@daily root /home/andy/bin/Backup_18_04.sh >/home/andy/backup.log 2>&1
>記号はスクリプトのすべての出力をファイルにリダイレクトし、2>&1はすべてのエラーメッセージを同じリダイレクト済み出力ファイルにリダイレクトします(1はデフォルトですべてのプログラムが通常のメッセージを送信する内部記述子で、2は同じです。エラーのため、2>&1は 'channel' 2を 'channel'のコピーに接続します1)。重要:行定義は改行で終了する必要があります。
私はcrontab -e
で構成された通常のCRONシステムを使用することを好みます。柔軟性が高いので、複雑に見えるだけです。たとえば、次のコマンドを使用して、毎日午前3時25分にスクリプトを実行できます。
#MINUTE HOUR DAYOFMONTH MONTH DAYOFWEEK COMMAND
25 3 * * * /home/andy/bin/Backup_18_04.sh >/home/andy/backup.log 2>&1
アスタリスクは各フィールドの「すべて」を意味するため、「すべての月のすべての曜日の3時25分」のcronはスクリプトを実行し、通常のエラーメッセージがあればファイルに保存します/home/andy/backup.log
。
使用していた単語@daily
は、毎日午前0:00に0 0 * * *
に相当します。
さらに、時間表示後のユーザー名は/ etc/crontabでのみ使用され、crontab -eで作成されたスクリプトでは使用されません(ユーザーはデフォルトで作成者であるため)。
他の2つの重要な側面は、スクリプトを実行可能ファイルとして宣言し、どのシェルインタープリターがそれを処理するかを示すことです。次のコマンドを使用すると、スクリプトを実行可能にするのは簡単です。
chmod a+x /home/andy/Backup_18_04.sh
シェルインタープリターを示すには、スクリプトの最初の行に記号のポンド/感嘆符#!
と必要なシェルパス(これは 'Shebang'と呼ばれます)が含まれている必要があります。次に例を示します。
#!/bin/bash
これにより、スクリプトがBash Shellインタープリターで処理されます。
Crontab行形式の詳細については、次のコマンドを使用して対応するマニュアルを参照してください。
man 5 crontab