スケジューリング入門とLinux Crontab構文

「株式情報を自動取得する」Pythonクローラーや「自動で明細書を送信する」Node.jsプログラムを作成した後、必ず直面する問題があります:毎日手動で実行するわけにはいきませんよね?

ここで必要になるのが「自動スケジューリング(Cronjob / Scheduled Tasks)」です。

スケジュールタスク(Cronjob)とは?

スケジュールタスクの概念は非常にシンプルで、スマートフォンの「アラーム」のようなものです。毎朝8時、毎時ちょうど、または毎週月曜日の午後3時など、コンピュータに「時間になったら、このコードを実行して」と指示できます。

ソフトウェアエンジニアリングの世界で、最も古典的かつ広く使われているスケジューリングツールが、Linuxオペレーティングシステムに組み込まれたcronデーモン(Daemon)です。そして、cronタスクを設定するための構文とファイルをCrontab(Cron Table)と呼びます。

Crontabの魔法の5つ星

他の人のスケジュール設定を見たことがあれば、次のような謎のコードを見たことがあるでしょう:

* * * * * /usr/bin/python3 /home/user/my_script.py

この一見ランダムに見える「5つ星」が、Crontabで時間を定義する核心です。左から右の5つのフィールドはそれぞれ:

  1. 分(Minute): 0~59
  2. 時(Hour): 0~23
  3. 日(Day of month): 1~31
  4. 月(Month): 1~12
  5. 曜日(Day of week): 0~7(0と7は日曜日を表す)

よく使われる時間設定例

[!TIP] 覚えられなくても大丈夫!業界のエンジニアはCrontabを書く際、通常crontab.guruというサイトを開きます。5つ星を人間が理解できる言葉に自動翻訳してくれるので、非常に便利です!

以下は最もよく使われる実践例です:

1. 毎分実行

* * * * *

(サーバーがダウンしていないことを確認するPingスクリプトに最適)

2. 毎時ちょうどに実行

0 * * * *

3. 毎朝8時30分に実行

30 8 * * *

(Lineグループに「おはようメッセージ」や「今日の天気予報」を送信するのに適しています)

4. 毎週月曜日の午前9時に実行

0 9 * * 1

5. 5分ごとに実行(スラッシュで頻度を表現)

*/5 * * * *

MacまたはLinuxで最初のCrontabを実装する

MacまたはLinuxシステム(ラズベリーパイを含む)を使用している場合、システムには既にcronが組み込まれており、何もインストールする必要はありません。

ステップ1:Crontabエディタを開く

ターミナルを開き、次のコマンドを入力してスケジュール表を編集します:

crontab -e

初めて実行する場合、システムは使用するエディタ(NanoやVimなど)を尋ねるかもしれません。初心者はNanoを選ぶのが直感的でおすすめです。

ステップ2:スケジュールとスクリプトのパスを記述

~/Documents/auto_email.pyにPythonスクリプトがあり、毎晩10時に実行したい場合:

エディタに次の行を追加します:

0 22 * * * /usr/bin/python3 ~/Documents/auto_email.py >> ~/Documents/cron_log.txt 2>&1

詳細解説:

  • 0 22 * * *:毎日22:00を表します。
  • /usr/bin/python3:Crontabでは絶対パスを使用することを強く推奨!Crontabの実行環境はターミナルと異なり、pythonの場所が見つからない可能性があります。
  • ~/Documents/auto_email.py:スクリプトの場所。
  • >> ~/Documents/cron_log.txt 2>&1:これは非常に便利な上級テクニックです!Crontabはデフォルトでバックグラウンドで実行されるため、プログラムがエラーを出しても気づきません。このコマンドは、プログラムのprint()出力とすべてのエラーメッセージをcron_log.txtファイルに記録し、デバッグを容易にします。

ステップ3:保存して終了

ファイルを保存すると、ターミナルに次のメッセージが表示されます: crontab: installing new crontab

おめでとう!自動化スクリプトが起動しました!コンピュータの電源を切らない限り、システムは毎晩10時に正確にメールを送信します!

なぜ他のツールも学ぶ必要があるのか?

Crontabは非常に強力ですが、致命的な欠点があります:コンピュータを24時間稼働させておく必要があることです。

ノートパソコンにスケジュールを設定した場合、画面を閉じるとスケジュールは実行されません。小さなスクリプトのために月に数百円かかるクラウドサーバー(VPS)を借りてCrontabを実行するのは、コストがかかりすぎます。

したがって、次の章では、完全無料のクラウドスケジューリングツールを使用してスクリプトをクラウドにアップロードする方法を教えます。これにより、コンピュータの電源を入れなくても、24時間稼働させて収益を生み出し、作業を続けさせることができます!

会員限定無料チュートリアル

このチャプターは登録会員限定の無料コンテンツです!ログインまたは登録してすぐにロックを解除してください。

今すぐログイン / 登録