iCalでシェルスクリプト込みのAppleScriptを実行する際の注意点。

サーバ用として常時起動していたMac miniかあぼーんし、OSを入れ替えた際の顛末。
iCalにどっさり自動処理用のAppleScriptが仕込んであったんだが、見事に全部ぶっ飛んでしまったので少ない記憶を頼りに作り直す羽目に。

しかし、いざ数週間運用してみると以前出来ていた自動処理が時たま実行されていない。
色々調べてみたら、どうやらradikoを自動●●している最中に裏で立ち上げようとしたスクリプトがどれも走っていなかったようなのである。

とりあえず、ざっと調べて判った事は

  • 他のアラームが掛かっていない状態で新規にアラームを実行すると、問題なく走る。
  • 「サウンド付きメッセージ」などを立て続けに数本仕込んでも、問題なく走る。
  • 長時間実行されるシェルスクリプトを含むAppleScriptをアラーム実行させている最中に他のアラームを実行しようとすると、一切走らない。

あぼーん前に組んであったシステムではアラームを何本同時実行しても全部走っていたのだから、新しく組んだスクリプトが何か間違えているとしか考えられない。
しかし、AppleScript Editorで複数のスクリプトを同時に実行しようとすると、これがまた不思議な事にきちんと走ってしまうのである。

んで、結論としては
iCalでdo shell scriptを含むAppleScriptを実行する場合は、シェルスクリプトの末尾を “&> /dev/null &” で閉じないとダメ
って事だった。

出力を/dev/nullに捨てるって所までは記憶にあったんだが、これは単にスクリプトの実行に失敗した時Finderにクソ長いエラーメッセージを表示させない為のオマジナイに過ぎない。
&付きでバックグラウンド実行させないと、複数のスクリプトを走らせる事は出来ませんよってオチだった。

てか、そんなん気付くか!!

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>