2013年04月11日

Emacsが死んだ時に勝手に嘆きTweetするようにした

基本的にEmacsがないと何もできないほどにEmacsに依存しているので Emacsが突然死してしまった場合に備えて 自動的にTwitterに向けて嘆くようにしてみました。

環境はMax OS XにてHomebrewで入れたEmacs23ちゃん。多分CocoaEmacsってやつ。

あと、事前準備として つぶやき専用コマンド tweet-command を試してみた | 麦汁三昧 で導入したtweet-commandが必要。

でまあ、とりあえず Emacsの死活監視のためのshell scriptの用意。

死んでる間に何度でもつぶやこうとされたら困るので つぶやいた後は ~/.emacs.dead というファイルを生成し、 それがある場合にはつぶやかないようにしている。

#!/bin/sh

emacs_process=`/bin/ps ux | grep Emacs.app | grep -v grep`

if [[ ${emacs_process[@]} = "" ]] ; then
  file="$HOME/.emacs.dead"

  if [[ ! -e $file ]] ; then
    echo "Emacs落ちたし帰りたい @mugijiru" | tweet
    touch $file
  fi
fi

こんな感じのを ~/bin/check_emacs.sh とかいう場所に適当に保存して実行権限を付与。

そしてcrontabで

PATH="/Users/mugijiru/bin:/Users/mugijiru/.rbenv/shims:/bin:/usr/bin:/usr/local/bin"

* * * * * check_emacs.sh

とでも書いておけば、 毎分毎分Emacsが生きているかを確認して死んでいたら嘆くことができる。

しかしまあ、ひとしきり嘆いた後には再度Emacsを立ち上げるわけで そいつがまた死んだ時も嘆きたいわけで。

そのために、Emacsを起動した時には 嘆いて後に作られる「死んでるの確認したよ」のファイルを削除してあげたい。

ってことで ~/.emacs.d/init.el の最後の方にでも適当に

(if (file-exists-p (expand-file-name "~/.emacs.dead"))
    (delete-file (expand-file-name "~/.emacs.dead")))

とか書いておく。

これでEmacsが再び死んだ時にも嘆くことができる。

なんだけどこれだと(滅多にしない)正常終了時にも嘆いちゃうので、 ~/.emacs.dead を作成してから死ぬことに。 こいつがあればcheck_emacs.shちゃんが嘆かないからね。

ってことでやはり ~/.emacs.d/init.el の最後の方に

(add-hook 'kill-emacs-hook
          '(lambda nil
              (shell-command (concat "touch " (expand-file-name "~/.emacs.dead")))))

なんて書いておく。

以上で 「Emacsが異常終了したら自動的に嘆きTweetをする」 ってのが実現。

というわけで私がTwitterで 「Emacs落ちたし帰りたい @mugijiru」 などとつぶやいている時は哀れんでやってください。

posted by 麦汁 at 22:16 | Comment(0) | TrackBack(0) | emacs | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。