特定の時間にシェルスクリプトを実行する
特定の時間に実行されるようにシェルスクリプトをスケジュールするには、launchd
または cron
を使用します。
launchd でタスクをスケジュールする
タスクをスケジュールするには、
cron
ではなくlaunchd
を使用します。launchd
の場合は、コンピュータのシャットオフまたはスリープ状態であるためにスキップされたタスクが、コンピュータがオンラインに復帰したときにキューに追加されます。launchd
を使用してタイマーベースのジョブをスケジュールするには、StartCalendarInterval
またはStartInterval
キーを使用します。launchd
について詳しくは、マニュアルページ(man で表示)を参照してください。
cron を使用してタスクをスケジュールする
cron
デーモンは、crontab ファイル内で定義されているスケジュール済みのコマンドを実行します。cron
デーモンは、「/etc/passwd」内のアカウントの後に指定された crontab ファイルを「/usr/lib/cron/tabs/」フォルダで検索し、見つかったファイルをメモリに読み込みます。cron
デーモンは、別のフォーマットの crontab ファイルの「/etc/crontab/」フォルダも検索します。cron
はその後 1 分間隔で繰り返し実行され、保存されている crontab ファイルを調べ、各コマンドについてその時点で実行すべきかどうかを確認します。
コマンドが実行されると、crontab ファイルの所有者または crontab ファイル内のオプションの MAILTO 環境変数で指定されているユーザに、結果がメールで送信されます。
cron
デーモンを実行するために使用するテーブルをインストール、アンインストール、またはリスト表示するには、crontab
ツールを使用します。ユーザは独自の crontab ファイルを作成できます。
独自の crontab ファイルを構成するには、
crontab -e
コマンドを使用します。空の crontab ファイルが編集モードで開きます。crontab ファイルの例を示します:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
この例では、最初のエントリーで、MacHD ボリュームのディスクのアクセス権が月曜日から金曜日まで毎日 18:30 に修復されます:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
2 番目のエントリーでは、毎週日曜日の 23:50 にボリューム修復操作を実行するようにスケジュールされています:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD