【M1/M2 Mac】launchdでプログラムを自動的に定期実行

Macに標準搭載されているlaunchdでプログラムを自動的に定期実行する方法をまとめました。

launchd

Linuxだとcronでプログラムを定期実行することが多いです。
Macにもcronは標準搭載されていますが、非推奨とされているようで権限周りのトラブルがあり、Linuxよりすんなり動かせませんでした。
そこで、Macで推奨されているlaunchdでプログラムを定期実行する方法を紹介します。

launchdでプログラムを定期実行

plistファイルを作成します。直接エディタで作成するか、https://launched.zerowidth.com/という外部サービスなどで作成できます。
作成したplistファイルは用途用途ごとに以下の場所に保存します。

場所 用途
~/Library/LaunchAgents/<ラベル名>.plist ユーザー単位のエージェント
/Library/LaunchAgents/<ラベル名>.plist 管理者が提供するユーザーごとのエージェント
/Library/LaunchDaemons/<ラベル名>.plist 管理者によって提供されるシステム全体のデーモン

記載例

1分(60秒)ごとに「/Users/shells/example.sh」を実行する場合のplistファイル
■~/Library/LaunchAgents/example1.plist


毎日2時に「/Users/shells/example.sh」を実行する場合のplistファイル
■~/Library/LaunchAgents/example2.plist


「launchctl load」コマンドでplistファイルを読み込み、起動します。

【例】

launchctl load ~/Library/LaunchAgents/example1.plist

停止する場合は「launchctl unload」コマンドを使います。

【例】

launchctl unload ~/Library/LaunchAgents/example1.plist

エラー「Load failed: 5: Input/output error」

Load failed: 5: Input/output error
Try running `launchctl bootstrap` as root for richer errors.

関連ページ

【Mac入門】基本設定、使い方、カスタマイズ術
macOSの基本設定、使い方、カスタマイズ術について解説します。

コメント