web-dev-qa-db-ja.com

Mac OS Xで毎日スクリプトを実行する方法を教えてください。

クーロン?起動しましたか? iCal ??

もしそうなら、どうですか?

62
Paul D. Waite

参考までに、3つのオプションすべてが機能します。しかしiCalオプションは他のものより多くの制限があります。

(他の答えで述べたようにcronとlaunchdを編集するためのGUIがあります)

Cronは最も簡単でよく知られていて、たくさんのチュートリアルがあります。 Coles Notesは、下から最後の行をcrontabに追加します(/etc/crontabを編集するか、コマンドラインでcrontabname__を使用して)。

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では、cronname__は実際にはlaunchdname__に置き換えられていますが、launchdname__はcronname__と後方互換性があります。つまり、cronname__を引き続き使用できますが、実際にはすべての作業にlaunchdname__が使用されます。

launchdname__を使用したい場合は、スーパーユーザーで他の質問もチェックしてください(例: rootとしてlaunchdコマンドを実行するにはどうすればよいですか? )実行時の設定ファイル(plistファイル)をどこに保存するか、どのようにロードされるか(例:Sudoを使ったかどうかなど)によって異なります。 - cronと同様です。

毎日実行されるサンプルの実行リスト(ファイルとラベルが同じであることを確認します - ラベルの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>

また、コンピュータがスリープまたはオフになったときに起動タスクがスケジュールされていて、コンピュータが再び使用可能になったとき(電源を入れたときまたは起動したとき)に実行されます。されています。編集:私はちょうどそのマシンの電源がオフになっていると、あなたはその間起動イベントを失うだろうと言っているAppleの文書にいた、(あなたのスクリプトは起動時に起動しない)、


他の選択肢は "at"を使うことです( "man at"でマニュアルページをチェックしてください)。スクリプトは、次のようにして自分自身を再スケジュールできます。

echo "sh $0 $@" | at `date +%H:%M` tomorrow

(10分ごとに実行するには、「明日」の代わりに「+ 10分」を使用します。スケジュールを停止するには、「at -l」を実行してスケジュール済みジョブIDをリストし、「at -rid"ジョブを削除します)

あなたはまず https://superuser.com/a/43680 を見てください)対応するデーモン(atrun)を始めなければならないかもしれません:

Sudo launchctl load -w /System/Library/LaunchDaemons/com.Apple.atrun.plist

長所:迅速な修正、Sudo/rootアクセスが不要、複雑なスケジュールパターンの実行が容易短所:OS Xの標準的なスケジューリング方法ではない(launchd)

61
Chealion

LaunchControl は、launchd/launchctl用のもう1つのGUIです。他の人が述べた代替案は毎日スクリプトを起動することが完全に可能ですが、LaunchControlを使って複雑なスケジュールを設定することができます(「毎週1回、毎週2時から8時の間の週末」など)。また、実際に仕事を検証するのは(AFAIK)唯一のツールです。仕事が期待通りに働かないなら、それはあなたになぜか示すでしょう。

あなたが望む限り無料で試すことができます。

8
Mark Hall

CronniX は、Mac上でcronジョブをスケジュールするためのNice GUIフロントエンドです。 。

5
Zoran

これはplist XMLを生成するためのシンプルで無料のユーティリティです。

http://www.gieson.com/Library/projects/utilities/launcha/

このユーティリティを使用すると、プログラムをインストールする必要はありません。ライブラリ/ LaunchAgentsフォルダに結果を保存するだけです。

2
bob

アップデート:これを行うMac OS X App Storeのいくつかのアプリをチェックアウトすることができます。

実行しているOSに応じて、Lingonも利用可能になるようです。

2
Steve Cooley
  • ICalの場合は、この 記事 を読んでください。
  • グーグルならcronのチュートリアルが十分に見つかるはずです。

ICalスクリプトはあなたがログインしている場合にのみ実行され、cronはログインせずにスクリプトを実行します。実行されました。 cronはこれをやっています。

2
Felix

あなたが無料のものを試してみたい場合は、私は夜明けまでタスクをお勧めします

enter image description here

http://www.macupdate.com/app/mac/33283/task-till-dawn

1
kyo

私はいつも Lingon を使いますが、開発中ではないようです。あなたは Crontooie を試すことができますが、私はそれを個人的に使ったことは一度もありません。あるいは端末でcrontabファイルを編集するだけです。

1
Josh
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

カレンダーイベントがニーズを満たす場合は、組み込みのAutomatorアプリケーションを使用して、カレンダーイベントによってトリガーされるカレンダーアラームを作成することもできます。組み込みのUIベースのアクションを使用して必要なことを実行したり、アプリケーションまたはカスタムAppleScript、JavaScript、またはシェルスクリプトを実行したりすることもできます。

0
Brett Zamir