macos – Mac OS Xでスクリプトを毎日実行させるにはどうすればいいですか?

cron launchd macos script

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に置き換えられていますが、launchdcronとの下位互換性があるので、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


無料のものを試してみたいという方には、タスク・ティル・ドーンがおすすめです

enter image description here

Download Task Till Dawn for Mac | MacUpdate
Download the latest version of Task Till Dawn for Mac for free. Read 3 user reviews and compare with similar apps on MacUpdate.

3  cyber8200  2016-03-26


plist XML を生成するためのシンプルで無料のユーティリティがあります

Launcha

このユーティリティを使えば、プログラムをインストールする必要はなく、結果を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で、この機能を備えたアプリをいくつか確認できます

また、どの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


タイトルとURLをコピーしました