A Simple Launchd Tutorial
あなたが頻繁に実行したい小さなスクリプトを書いたとします。 Macを使用している場合は、launchdを使用するのに最適なツールです。
crontabよりも優れているのは、とりわけ、プログラムの実行がスケジュールされているときにコンピュータがオフになっている場合、launchdはコンピュータがウェイクアップするとすぐにプログラムを実行するためです。 一方crontabはしません。
最初に行うことは、実行するスクリプトを作成することです。 私は単純なノードを書くつもりです。jsしかし、あなたはあなたが望むものは何でも使うことができます。
touch ~/demo/main.js
この例のために、このスクリプトが実行されるのは、実行された時刻をログに記録することだけです。
console.log("Hello", Date.now())
ここで、launchd設定plistファイルを作成する必要があります。
touch ~/Library/LaunchAgents/com.demo.daemon.plist
plistファイルは、設定のためのAppleのカスタムXML形式です。 このコードをそこに貼り付けます。 この例で使用しているディレクトリに/Users/chet/demoを変更する必要がある場合があります。
このファイルはいくつかのことを指定します:
- デーモンは、ユーザーがログインするたびに起動します。
- 20秒ごとに実行されます。
- いくつかのログファイルに出力されます(デバッグに非常に便利です)。
- 環境パスを設定します(プログラムが
usr/local/binの他のコマンドを使用する場合に便利です)。 - コマンドは
/Users/chet/demoディレクトリで実行されます。コマンドは - で、コマンドは
/usr/local/bin/node main.jsです。
ここで読むことができる他のオプションがたくさんあります。 一般的に使用されるオプションはKeepAliveオプションで、スクリプトが終了したりクラッシュしたりするたびにスクリプトを再起動します。 これは、スクリプトを常に実行したい場合に便利です。
今、私たちはそれを実行する必要があります。 まず、Console.appを開きます。 あなたは前にそれを使用したことがないかもしれませんが、それはもののこの種のデバッグのためのネイ システム内で。ログセクションでは、com.demo.daemonを検索して、launchdを起動しようとするとシステムエラーがあるかどうかを確認できます。

ターミナルに戻り、次のコマンドを実行します。
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
Console.appにいくつかのエラーが表示された場合は、unloadでデーモンを停止し、stderr.logファイルでエラーを探すことができます。
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
すべてがうまくいった場合、Console.appには何も表示されず、20秒ごとに~/demo/stdout.logファイルに入ってくるログが表示されるはずです。