メインコンテンツまでスキップ

cronとlaunchdで定期実行を知る

この章でできるようになること

定期実行とは何かを理解し、cronとlaunchdの入口を説明できるようになります。

この章では、危険な自動化はしません。 ログに時刻を残す程度の小さな例で考えます。

まず知っておくこと

定期実行は、決まった時間や間隔でコマンドを自動実行する仕組みです。

LinuxやWSL Ubuntuではcronがよく使われます。 macOSではlaunchdが標準的な仕組みです。

cron
→ Linux系でよく使われる定期実行

launchd
→ macOSのサービス起動・定期実行の仕組み

便利ですが、「勝手に動く」仕組みです。 設定する前に、何が動くか、どこにログが出るか、どう止めるかを確認します。

定期実行は手動確認してから

まず手動で実行できることを確認する

定期実行にする前に、必ず手動で動くことを確認します。

cd ~/vibe-practice/local-automation
./scripts/daily-note.sh
tail -n 5 logs/daily-note.log

手動で失敗するものを定期実行にしてはいけません。

cronの入口

WSL UbuntuやLinuxでは、cronを使うことがあります。 WSL Ubuntuでは、環境によってcronが動いていない場合もあります。 この章では、登録を必須にせず、形式と注意点を理解することを優先します。

現在の設定を見るには次を使います。

crontab -l

何も設定していなければ、エラーや空の表示になることがあります。

cronの設定例は次の形です。

* * * * * cd /home/あなたのユーザー名/vibe-practice/local-automation && ./scripts/daily-note.sh

これは毎分実行する例です。 学習用に短く確認できますが、放置するとログが増え続けます。 試す場合は、必ず止め方まで確認します。

ここで cd ... && ./scripts/daily-note.sh としているのは、作業ディレクトリを固定するためです。 && は、左側のコマンドが成功したときだけ右側のコマンドを実行する書き方です。 daily-note.shlogs/daily-note.log という相対パスに追記します。 定期実行では、ターミナルで手動実行したときと作業ディレクトリが違う場合があるため、先に練習用リポジトリへ移動してから実行します。

cronを試す場合の止め方

cronを編集するには次を使います。

crontab -e

ただし、エディタが開きます。 初学者には少し扱いにくいので、無理に登録しなくて構いません。

登録した場合は、同じ行を削除して保存すれば止まります。 止めた後に確認します。

crontab -l

この教材では、cronの存在と形式を理解できれば十分です。

launchdの入口

macOSでは、launchdを使うことがあります。

ユーザー単位の設定ファイルは、一般に次のような場所に置きます。

~/Library/LaunchAgents/

launchdの設定はXML形式のplistファイルです。 cronより長く見えますが、macOSの標準的な仕組みです。

この部では、実際の登録は必須にしません。 まずは「macOSではcronだけでなくlaunchdがある」と知っておけば十分です。

何を定期実行してよいか

最初に定期実行してよいのは、失敗しても影響が小さいものです。

よい例:

  • ローカルのログに時刻を書く
  • 一時ディレクトリの状態を確認する
  • 自分用のメモを作る

避ける例:

  • ファイルを大量に削除する
  • 外部サービスへ送信する
  • 課金が発生するAPIを呼ぶ
  • GitHubへ自動pushする
  • 秘密情報を含むファイルを処理する

何が起きたのか

第4部で作った daily-note.sh は、手動で実行するスクリプトでした。 cronやlaunchdは、それを決まったタイミングで実行する仕組みです。

第1部で学んだPATHや実行権限は、定期実行でも関係します。 ターミナルで動くコマンドが、定期実行ではPATHの違いで動かないこともあります。

そのため、定期実行では絶対パスを使うことが多くあります。

運用者の視点

定期実行を設定するときは、次を確認します。

  • 手動で動くか
  • 実行するファイルの絶対パスは何か
  • ログはどこに出るか
  • 失敗したときに気づけるか
  • 止め方を知っているか
  • 放置しても問題ないか

「動いた」よりも「止められる」が重要です。

AIに聞いてみよう

第4部で作った daily-note.sh を定期実行する場合の注意点を整理してください。

確認したい観点:
- cronとlaunchdの違い
- 手動実行の確認
- 絶対パス
- ログの置き場所
- 止め方
- 定期実行してはいけない処理

まだ実際の設定変更はしないでください。

commitポイント

この章では、定期実行の考え方を学ぶだけでも構いません。 設定ファイルを作っていなければ、commitは不要です。

もし練習用に設定ファイルの例を作った場合は、秘密情報や個人情報が入っていないか確認してからcommitします。

次へ

次は、自動化をAIとGitで見直します。