launchd
rootとしてデーモン(/Library/LaunchDaemons
または/System/Library/LaunchDaemons
)を実行し、ユーザーがログインしているかどうかに関係なくデーモンを実行します。ユーザーがそのユーザーとしてログインすると、起動エージェント(/Library/LaunchAgents/
または~/Library/LaunchAgents/
)が実行されます。setuidを使用して、デーモンでスクリプトを実行しているユーザーを変更することはできません。この/System
ディレクトリはMac OS Xのタスク用に予約されているので、launchd
理にかなっているように/Library
、~/Library
フォルダをフォルダまたはフォルダに入れることをお勧めします。
したがって、最初のステップは、エージェントを作成するのかデーモンを作成するのかを決定することです。
2番目のステップは、.plist
ファイルを作成することです。LingonなどのGUIベースのプログラムを使用してこれを支援したり、お気に入りのテキストエディターを使用したりできます。
.plist
スクリプトを1時間ごとに実行するためのサンプル(StartInterval
またはStartIntervalCalendar
、必要なキー- StartInterval
アイテムが1 x
秒ごとStartIntervalCalendar
に、特定の時間や日付で発生するため。StartCalendarIntervalで作成した例については、SuperUserの126907を参照)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.IDENTIFIER_HERE.SOMETHING</string>
<key>OnDemand</key>
<true/>
<key>RunAtLoad</key>
<false/>
<key>UserName</key>
<string>USERNAME HERE</string>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>ProgramArguments</key>
<array>
<string>Argument_1</string>
<string>Argument_2</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>
.plist
必要に応じてを変更して、必要に応じてスクリプトと引数を指定し(引数は別々の行にあります)、ラベル値と同じ名前でファイルを.plist
最後に保存します。(たとえば、local.my-mac.flickrstats
として保存されますlocal.my-mac.flickrstats.plist
)。まだ作成していない場合は、デーモンを作成するとき(常に実行される)、または(自分だけがログインしている)または(任意のユーザーがログインしている)にその.plist
ファイルを移動します。/Library/LaunchDaemons
~/Library/LaunchAgents
/Library/LaunchAgents
launchctl
ファイルをロードするために必要に応じて実行するジョブを開始します。のアイテムには/Library
、sudoを使用する必要があります。たとえば、sudo launchctl load -w /PATH/TO/PLIST
:参考のためにも、スーパーユーザーで次の質問をチェックアウトするルートとしてのlaunchdコマンド、広いデーモンシステムをロードし、そしてどのように私は毎日実行するスクリプトを取得することができます