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
ファイルに入ってくるログが表示されるはずです。