Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Linux
screen + ssh-agent の続き。この記事では Linux == RHEL 6 && OS X == Mavericks ということにしておきます。
  1. netstat -lnx | grep -F "${SOCKET_FILE}"
    Linux, OS X。root 権限不要だが残念な気分になること請け合い
  2. lsof -U "${SOCKET_FILE}"
    Linux, OS X。Linux では要 root 権限
  3. fuser "${SOCKET_FILE}"
    Linux, OS X。Linux では要 root 権限、厳密にはソケットであるかどうか判別できていない
  4. ss -xl "src unix:${SOCKET_FILE}"
    Linux のみ (iproute)。root 権限不要だがファイルパスに空白が入っていたりすると泣くしかない
  5. nc -w 0 -U "${SOCKET_FILE}"
    Linux, OS X。root 権限不要、実際にソケット接続するのがアレだが、まぁ妥協可能なラインか?

うーむ、どれも帯に短し襷に長しという感じ… :(
root 権限がなくても動く lsof の機能限定版があれば嬉しいのだけれど。
Category: Linux
細かすぎて他の人に伝わりにくい話なのですが忘れないようにメモ。

要件としては、
  • ssh-agent をローカルマシンで立ち上げて、Agent Forwarding を有効にしてリモートマシンに接続する
  • リモートマシンでは screen を使用して、その中のシェルで Forward された Agent を使用する
の 2 点。

Agent Forwarding を使用するとリモートマシン上にソケットファイルが作成され、環境変数 SSH_AUTH_SOCK にそのソケットファイルのパスが設定されるわけですが、screen を detach & 再 attach しても、screen 内で既に起動しているシェルの環境変数は変わりません。このため、ssh 接続 (ソケット 1 生成) > screen 起動 > 作業 > screen detach > ssh 切断 (ソケット 1 削除) > ssh 接続 (ソケット 2 作成) > screen attach > SSH Agent が使えなくなってる...! (環境変数の SSH_AUTH_SOCK はソケット 1 を指したままになっているため) という問題が発生します。

解決策として、zshrc で「起動時に、もし SSH_AUTH_SOCK にソケットファイルが存在したら、設定ファイルにパスを書き出しておく」「precmd フック (プロンプト表示時に呼び出される) で設定ファイルを毎回読み込む」というハックを書いてみたら便利になって満足。毎回設定ファイルを読み出すオーバヘッドは無視できるレベルなので気にしない。

ただ、SSH が異常終了した場合 (上記の「ソケット 1 削除」が行われないケース) はダメな気がする。Unix Domain Socket の生存確認ってシェルスクリプトから簡単にできるのだろうか... (nc -U とか使えばできそうな気もするけど、ちょっとツライ感じ)。
Category: Apple
LM を使う前に、歌詞の設定されていない曲を一つのプレイリストに集めておくと便利です。

LM には、(Mac OS X 版にも Windows 版にも) iTunes Scripts という便利スクリプトが付属しており、その中の 1 つ「歌詞のない曲を集める」を使用すると簡単に歌詞の設定されていない曲を集めたプレイリストを作成できます (Mac / Windows)。

Mac OS X をお使いの (geek な) 方は、one-liner でも可。 (これが書きたかっただけ)
osascript -e 'tell application "iTunes" to duplicate (every track whose lyrics is "") to (make playlist with properties {name:"歌詞がない曲"})'
Category: Computer
Cygwin で X Window Server を使用するために startx を行うと、同時に xterm が自動的に立ち上がります。

これを抑止するには、ホームディレクトリ以下に空の .startxwinrc ファイルを作成しておけば OK です。
$ touch ~/.startxwinrc
Category: Apple
懐かしの After Dark モジュール「Flying Toasters」を再現した The Return of the Flying Toasters というページを発見して感動。
ぜひもう一度 Mac のスクリーンセーバにしたいなぁと思って方法を探してみたところ、WebSaver という、Web ページをスクリーンセーバに設定できるソフトウェアを発見したので併せてご紹介しておきます。

WebSaver は 2010 年に更新が止まっています (最新リリースは 2010 年ですが開発は続いているようです) が、Mountain Lion で問題なく動作しました (ただし、コード署名されていないので、右クリックから「開く」を選択してインストールする必要があります)。インストール後、スクリーンセーバのオプション画面で The Return of the Flying Toasters のページのダイアログ下にある「Direct-link with these settings:」に示された URL を貼付ければ設定完了です。