MENU

macOSのlaunchdでスクリプトを定期実行するplistのメモ

目次

macOSのlaunchdでスクリプトを定期実行する方法

macOSのlaunchdは、特定の時間に自動でスクリプトを実行するために利用できる便利な機能です。今回は、毎朝3時15分にバックアップスクリプトを実行するためのplistファイルの例とその解説を紹介します。

必要なPATHをとおしたり標準出力、エラー出力の設定が便利です。

設定ファイル(plist)の内容

まず、以下はlaunchd用のplistファイルの例です。このファイルを使って、指定したスクリプトを毎日指定した時間に実行できます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- Labelは一意の識別子です。重複しないように適切な名前を指定してください -->
    <key>Label</key>
    <string>com.example.backup-task</string>

    <!-- ProgramArgumentsは実行したいスクリプトのパスを指定します -->
    <key>ProgramArguments</key>
    <array>
        <string>/Users/username/scripts/backup-task.sh</string>
    </array>

    <!-- EnvironmentVariablesで必要な環境変数を指定します。PATH変数を設定 -->
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin</string>
    </dict>

    <!-- RunAtLoadはシステム起動時にスクリプトを実行するかを指定します -->
    <key>RunAtLoad</key>
    <false/>

    <!-- StandardOutPathとStandardErrorPathでログの出力先を指定します -->
    <key>StandardOutPath</key>
    <string>/tmp/backup-task.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/backup-task-error.log</string>

    <!-- StartCalendarIntervalで実行タイミングを指定します。毎日3時15分に実行 -->
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
</dict>
</plist>

設定ファイルの各部分の解説

Label

<key>Label</key> には、このlaunchdジョブの一意な識別子を指定します。他のジョブと名前が重複しないように注意が必要です。この例ではcom.example.backup-taskを使っていますが、適切な名前に変更してください。

ProgramArguments

ここには実行するスクリプトの絶対パスを指定します。この例では/Users/username/scripts/backup-task.shとなっていますが、実際のスクリプトのパスに置き換えてください。

EnvironmentVariables

launchdはデフォルトでユーザの環境変数を引き継ぎません。そのため、必要に応じてPATHなどの環境変数を明示的に設定する必要があります。ここでは、一般的なPATHを指定していますが、必要に応じてカスタマイズしてください。

RunAtLoad

システム起動時にスクリプトを実行したい場合は、このキーをtrueに設定します。起動時の実行が不要な場合はfalseに設定します。

StandardOutPathとStandardErrorPath

スクリプトの実行結果やエラーのログを指定されたファイルに出力します。これにより、スクリプトが正しく実行されているか、エラーが発生した場合に調査が容易になります。/tmp/ディレクトリにログを出力するように設定していますが、適宜変更してください。

StartCalendarInterval

この部分で、実行タイミングを設定します。Hour3Minute15に設定することで、毎朝3時15分にスクリプトが実行されるようにしています。希望の時間に変更してください。

設定ファイルを有効にする

  1. 上記の内容をテキストエディタで編集し、~/Library/LaunchAgents/com.example.backup-task.plistとして保存します。名前は適宜変更可能です。
  2. 次に、以下のコマンドをターミナルで実行して、launchdにジョブを読み込ませます。
launchctl load ~/Library/LaunchAgents/com.example.backup-task.plist

これで、毎日指定した時間にスクリプトが自動的に実行されるようになります。ジョブを停止したい場合は、以下のコマンドでアンロードできます。

launchctl unload ~/Library/LaunchAgents/com.example.backup-task.plist

まとめ

launchdを使うことで、定期的に実行したいスクリプトやタスクを簡単にスケジュールすることができます。環境変数の設定やログの出力設定など、細かいカスタマイズも可能なので、自分の環境に合わせて調整してください。

目次