AppleScriptをコマンドラインから定期的に実行したい
マカーなら1度はAppleScriptのお世話になりますよね!
僕がよく使っているのは、あるアプリケーションを再起動するAppleScriptです。そのアプリケーションはよく不安定になるので、1日に何回も再起動しています。
終了→再起動の2ステップがスクリプト実行の1ステップになって快適・・・なんだけど、スクリプトの実行がめんどくさい!何回も実行するのはめんどくさい!よし、自動化のお勉強をしよう!!!
コマンドラインからAppleScriptを実行
今までLaunchBarとかスクリプトエディタで実行していたけど、自動化するならコマンドラインから実行しないといけません。
シン石丸の電脳芸事ニッキ: コマンドラインからAppleScriptを実行し引数でパラメータを渡す
こちらでその方法が解説されています。
% osascript hoge.scpt
あ、これだけで実行できるんですね。
コマンドのスケジュール実行
やったことないから調べよう><
・・・えーと、cronというものを使うと幸せになれるみたいです。
cronは、UNIX系OSに、装備されている自動実行ツールの一つです。
http://homepage1.nifty.com/cra/linux/cron.html
指定したタイミングで、繰り返し実行されるので、よく使われます。
デフォルトでも、各種ログの、整理を行っています。
素敵な雰囲気がします!
タイミングやコマンドは、crontabというファイルに記述します。
コマンドcrontab -eで現在のユーザーのcrontabをエディタで開くことができます。
% crontab -e # エディタでcrontabを開く
エディタが開くので、以下のように記述します。
# +------------ 分 (0 - 59) # | +---------- 時 (0 - 23) # | | +-------- 日 (1 - 31) # | | | +------ 月 (1 - 12) # | | | | +---- 曜日 (0 - 6) (日曜日=0) # | | | | | # * * * * * 実行されるコマンド # 30分おきに以下のシェルスクリプトを実行 */30 * * * * /Users/ama-ch/scripts/relaunch.zsh
crontab - Wikipedia
crontabの書き方 ― server-memo.net
このあたりを参考にさせていただきました。
30分ごとにrelaunch.zshというスクリプトを実行するようにしました。
relaunch.zshの中身はこんな感じ↓
osascript ~/applescripts/reLaunch.scpt # あるアプリケーションを再起動するAppleScriptを実行 date "+%Y.%m.%d %H:%M:%S" > ~/scripts/relaunch.log # 実行時間をログに吐く
コマンドを2つ実行するだけの簡単なものです。
あとはcrontabを保存して、cronコマンドを実行・・・はしなくて良いみたいです。
% sudo cron [~] Password: cron: cron already running, pid: 2341 % ps -p 2341 [~] PID TTY TIME CMD 2341 ?? 0:00.03 /usr/sbin/cron
最初からバックグラウンドで動いてるのかな?
crontabに記述したコマンド(relaunch.zsh)がちゃんと実行されているか、ログを監視してみます。
% tail -f ~/scripts/relaunch.log 2009.01.17 12:00:05 2009.01.17 12:30:04 2009.01.17 13:00:03
30分おきに実行されているのがわかりますね!
cronたんが勝手に再起動してくれるようになったので、これからは自分で再起動しなくても良くなりました。やったね!
まとめ
- AppleScriptはosascriptコマンドで実行できる
- 自動実行はcronで幸せ
- 「crontab -e」でエディタを開き、スケジュールとコマンドを記述する
- 「crontab -l」でcrontabの内容が確認できる