特定の時間にスクリプトを実行するための Crontab の設定方法

サーバーやマシン上で cron を使用してタスクを自動化したいと考えていますか?新しいユーザーの間でよくある質問は、特定の時間にスクリプトを実行するために crontab エントリを設定する方法です。この投稿では、面倒なメール通知やログの生成なしに、毎日 11:59 PM にスクリプトを実行することに焦点を当てます。ステップバイステップで達成する方法を探っていきましょう。

Crontab の理解

Crontab は、Unix系オペレーティングシステムにおける時間ベースのジョブスケジューラです。ユーザーは特定の間隔または時間にジョブ(コマンドやスクリプト)をスケジュールすることができます。crontab ファイルには、指定された時間に実行されるコマンドのリストが含まれています。ここで使用するフォーマットは次の通りです:

* * * * * command_to_execute

各アスタリスクは時間単位を表します:

  • 最初の * は分(0-59)
  • 2番目の * は時間(0-23)
  • 3番目の * は月の日(1-31)
  • 4番目の * は月(1-12)
  • 5番目の * は曜日(0-7、ここで0と7は日曜日を表します)

Crontab エントリの設定

11:59 PM に毎日スクリプトを実行するために crontab を設定するには、次の手順を実行します:

  1. crontab エディタを開く:次のコマンドをターミナルで実行して、crontab を開きます:

    crontab -e
    
  2. crontab コマンドを入力:以下の行を追加して、希望の時間にスクリプトを実行します:

    59 23 * * * /path/to/your/script.sh > /dev/null 2>&1
    

    各部分が意味するところは以下の通りです:

    • 59 - このコマンドは59分目に実行されることを指定します。
    • 23 - このコマンドは23時(11 PM)に実行されることを指定します。
    • * * * - アスタリスクは、このコマンドが毎日、毎月、毎週実行されることを示しています。
    • /path/to/your/script.sh - これを実際のスクリプトのパスに置き換えます。
    • > /dev/null 2>&1 - この部分は標準出力および標準エラーを /dev/null にリダイレクトし、メールやログエントリが作成されないようにします。

メールとログの生成を避ける

> /dev/null 2>&1 を追加することで、スクリプトからの出力がメールで送信されず、どこにもログが記録されないことが保証されます。これにより、crontab がクリーンになり、特に頻繁に実行されるが報告の必要がないスクリプトに対して受信トレイの混雑を軽減できます。

最後の考え

crontab の設定は、タスクを自動化するためのシンプルでありながら強力な方法です。上記の手順に従えば、メールやログの煩わしさなしに、毎日 11:59 PM にスクリプトを簡単にスケジュールできます。

crontab に関するさらに包括的な情報を得るためには、ターミナルで man crontab を実行して man ページを確認してください。良い例やさらなる説明が提供されています。

さあ、リラックスしてコンピュータに繰り返し作業を任せましょう!