Cron?Launchd? iCal?
もしそうなら、どうやって?
69 Paul D. Waite 2010-04-02
参考までに、3つのオプションはすべて機能します。しかし、iCalオプションは他のオプションよりも制限があります
(他の回答にもあるように、cronやlaunchdを編集するためのGUIがあります)
Cronが一番わかりやすくてよく知られていて、チュートリアルもたくさんあります。コールズノートでは、下から最後の行を自分のcrontabに追加します(/etc/crontab
を編集するか、コマンドラインでcrontab
を使うかのどちらか)
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
Mac OS Xでは、cron
は実際にはlaunchd
に置き換えられていますが、launchd
はcron
との下位互換性があるので、cron
を使うことはできますが、実際にはlaunchd
がすべての作業をしています
launchd
を使用したい場合は、スーパーユーザーのここにある他の質問をチェックアウトしたいと思うでしょう: (例: How do I run a launchd command as root?) 設定ファイル (plist ファイル) をどこに保存するかについては、実行時にどのディレクトリに保存されているか、どのようにロードされているか (例: sudo を使用したかどうか) に依存します – cron に似ています
サンプルのrun daily launchd plist (ファイルとラベルが同じであることを確認してください – ラベル用のplistを差し引いたもの) は以下の通りです – このスクリプトは毎日午前0時3分に実行されています
<?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>KeepAlive</key>
<false/>
<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>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>03</integer>
</dict>
</dict>
</plist>
また、コンピュータがスリープまたはオフのときにスケジュールされていた launchd タスクは、コンピュータが再び使用可能になったとき(電源を入れたり、起動したりしたとき)に実行されることにも注意が必要です。編集: 私はちょうどアップルのドキュメントを見ていたところですが、マシンがオフの場合、その間の起動イベントを失うことになります(スクリプトは起動時には起動しません)、(スリープは起動時にスクリプトを起動します)
もう一つの方法は、”at “を使うことです(マニュアルページの “man at “を確認してください)。スクリプトは、例えば
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(10分ごとに実行するには “tomorrow “の代わりに “+ 10 minutes “を使用してください。スケジューリングを停止するには “at -l “でスケジュールされたジョブのIDをリストアップし、”at -r id “でジョブを削除します)
最初に対応するデーモン (atrun) を起動する必要があるかもしれません (https://superuser.com/a/43680 を参照してください)
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
メリット:修正が早い、sudo/rootアクセスが不要、複雑なスケジュールパターンが簡単にできる デメリット:OS Xの標準的なスケジューリング方法ではない(起動されている)
67 Chealion 2010-04-02
LaunchControl は launchd/launchctl のもう一つの GUI です。他の人が言及している他のツールは毎日スクリプトを起動することができますが、LaunchControl を使うと複雑なスケジュールを設定することができます (「平日に一回、週末は午後2時から8時までの間に1時間ごとに」のような)。また、LaunchControlは(AFAIK)実際にジョブを検証する唯一のツールです。ジョブが期待通りに動作しない場合は、その理由を表示してくれます
好きなだけ無料で試すことができます
10 Mark Hall 2014-01-27
CronniXは、Mac上でcronジョブをスケジューリングするための素敵なGUIフロントエンドです。cronのドキュメントを掘り下げたくなければ、かなりまともなものです
5 Zoran 2010-04-02
無料のものを試してみたいという方には、タスク・ティル・ドーンがおすすめです
3 cyber8200 2016-03-26
plist XML を生成するためのシンプルで無料のユーティリティがあります
このユーティリティを使えば、プログラムをインストールする必要はなく、結果をLibrary/LaunchAgentsフォルダに保存するだけです
3 bob 2016-11-09
- iCalについては、articleを読みたいかもしれません
cron
については、ググれば十分なチュートリアルが見つかるはずです
iCalスクリプトはログインしている場合にのみ実行され、cron
はログインしていなくてもスクリプトが実行されます。iCalはスクリプトが実行されるべき時間にMacの電源が入っていた場合にスクリプトを実行するかどうかはわかりませんが、cron
はこれを行っています。cron
がやっている
2 Felix 2010-04-02
アップデート: Mac OS X App Storeで、この機能を備えたアプリをいくつか確認できます
LaunchD タスクスケジューラ
また、どのOSを使っているかにもよりますが、リンゴンも利用できるようです
2 Steve Cooley 2013-10-03
私はいつもリンゴンを使っているのですが、どうやら開発中止のようです。Crontooieを試すこともできますが、個人的には使ったことがありません。もしくはターミナルでcrontabファイルを編集するだけ
1 Josh 2010-04-02
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $
… “….cut….” のために投入したコマンドラインは、5分ごとに実行されます
30年経った今でも「cron」はお気に入りのスケジューラーです
-C
0 C.J. Steele 2010-06-09
カレンダーイベントが必要な場合、内蔵の Automator アプリケーションでは、カレンダーイベントによってトリガーされるカレンダーアラームを作成することもできます。内蔵の UI ベースのアクションのいくつかを使用して必要なことを行うこともできますし、アプリケーションやカスタム AppleScript、JavaScript、シェルスクリプトを実行させることもできます
0 Brett Zamir 2018-02-13