ほとんどの最新のUNIXでは、cronは各/etc/cron.d
タスクが指定されたユーザーとして実行される個々のcrontabファイルをサポートしています。これらのファイルを編集すると、crontabが自動的に更新されます。これにより、個々のパッケージはグローバルcrontabを汚染したり、ユーザー固有のcrontabを使用せずに独自の自動化タスクをインストールできます。
OSXはこれをサポートしていないようです。これは本当ですか?
それでは、これを実装するための最良の方法は何ですか?私はOSXで開発していますが、Linuxで本番コードを実行しているので、launchdの代わりにcrondを使用する必要があります。後者が潜在的な利点を持っているにもかかわらず。
ベストアンサー1
OS Xではlaunchdを使用する必要があります。これを実装するために例を挙げて説明します。
そのフォルダに移動して、/Users/your-username/Library/LaunchAgents
次のplistファイルを保存します。名前をで指定しましたが、com.username.testscript.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>
<key>Label</key>
<string>com.your-username.testscript</string>
<key>ProgramArguments</key>
<array>
<string>/Users/your-username/bin/testscript.sh</string>
</array>
<key>Nice</key>
<integer>1</integer>
<key>StartInterval</key>
<integer>60</integer>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/com.your-username.testscript.err</string>
<key>StandardOutPath</key>
<string>/tmp/com.your-username.testscript.out</string>
</dict>
</plist>
文書は非常に自明です。 60秒ごとにコマンドを実行し、/Users/your-username/bin/testscript.sh
ロード時に実行され、エラーを保存して/tmp/com.username.testscript.err
ログインします/tmp/com.username.testscript.out
。
ディレクトリ/Library/LaunchAgents/
またはを使用することもできます/Library/LaunchDaemos/
。