OS Xでは、ドキュメントに記載されているように、次のようになります。
それはまだサポートされていますがcron
、推奨される解決策ではありません。を優先して非推奨になりましたlaunchd
。
cron
Unixでの長い経験から手の甲のようにすでに知っている場合、OS XとLinuxの両方で同じことを実装している場合、または他の良い言い訳がある場合は、先に進んでを使用してcron
ください。しかし、明らかに、ここではそうではありません。
また、を使用している場合launchd
、ここでの答えは簡単です。マニュアルページから:
WorkingDirectory <string>
このオプションのキーは、ジョブを実行する前にchdir(2)へのディレクトリを指定するために使用されます。
または、アプリの実行に使用される環境を変更する場合(たとえば、そのディレクトリをに配置する場合PYTHONPATH
)、それは同じように簡単です。
launchd.plist
プログラムを1時間ごとに実行するためのサンプルファイルは次のとおりです。
<?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.example.ProgramToRun</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>Documents/workspace/programfolder/src/ProgramToRun.py</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>WorkingDirectory</key>
<string>Documents/workspace/programfolder/src/</string>
</dict>
</plist>
多くの古いUnixの手はこれを見て、「うわー、それはひどく冗長だ」と言うでしょう。そして、私は同意します。一方、非推奨ではありません。また、追加機能があり、睡眠との相互作用は十分に文書化されており、簡単に構成できます。また、cron
基本的にマンページと「自分が何をしているのか知っているなら、先に進んでそれを使ってください、しかし私たちはあなたを助けません」と言っているいくつかの文書。