tmuxのunixドメインソケットを消している犯人を特定したい


MacOS X El CapitanのiTerm2上でzshを起動し、そこから手でtmuxを起動しています。

そしてしばらく使っているといつのまにかtmuxのunixドメインソケット (以下「ソケット」) が消されてしまいます。

[code]

    /private/var/folders/<途中省略>/T/tmux-501/default
    
[/code]

にありますが、`tmux-501`
以下が消されてしまいます。消えるタイミングがまちまちで、おおむね数時間使っているといつの間にか消えている感じです。これが消えてしまうと `tmux ls`
などソケットを読み書きする機能を使ったとき

[code]

    error connecting to /private/var/folders/<途中省略>/T/tmux-501/default (No such file or directory)
    
[/code]

というエラーを報告してくるようになります。ソケットファイルが消えていることに気づくのはこのソケットを読み書きする機能を使った時であり、当然消えたタイミングではありません。つまりいつ消えたのかわかりません。このことから誰が消しているのか皆目見当がつかなくなっています。

ところでtmuxのmanを見ると、`SIGUSR1` をtmuxのプロセスに送るとソケットファイルを作りなおしてくれる
(ただし親ディレクトリがないと失敗する) との意味の記述があるので以下のようにやってみると復活できました。

[code]

    $ mkdir -m700 /private/var/folders/<途中省略>/T/tmux-501
    $ killall -SIGUSR1 tmux
    
[/code]

このあと `tmux ls` が正常に見えるようになります。

ディレクトリのパーミッションを700にしているのは、もともとtmuxが作ったディレクトリがそうだったのと、デフォルトの755のままだと作りなおしてくれなかったからであり、特に深い意味はありません。

実用上は作りなおせばいいので面倒なこと以外は問題ない気はします。が、誰が消しているのか気持ち悪くて仕方がありません。誰がいつ消しているのか特定できれば解決の糸口になる気がしています。特定する方法は何かありませんでしょうか?

### 2016/1/28 11:54追記

1秒毎にファイルが消えたかチェックして消えたら時刻を記録するシェルスクリプトを回していたところ消えた時刻を捕まえました。今日の11:42:56、コンソール.appでログを漁ってみるとこんなものが記録されていました。

[code]

    2016/01/28 11:42:56.581 sandboxd[132]: ([52708]) PluginProcess(52708) deny file-write-unlink /private/var/folders/<中略>/C/com.apple.sandbox
    2016/01/28 11:42:56.588 sandboxd[132]: ([52708]) PluginProcess(52708) deny file-write-unlink /private/var/folders/<中略>/C/com.apple.sandbox
    2016/01/28 11:42:56.597 sandboxd[132]: ([52708]) PluginProcess(52708) deny file-read-data /private/var/folders/<中略>/C/com.apple.sandbox
    2016/01/28 11:42:56.975 launchservicesd[79]: SecTaskLoadEntitlements failed error=22
    2016/01/28 11:42:56.981 launchservicesd[79]: SecTaskLoadEntitlements failed error=22
    2016/01/28 11:42:56.983 launchservicesd[79]: SecTaskLoadEntitlements failed error=22
    
[/code]

最初から3つまでのエントリにはそれぞれコンソール.appが詳細情報ありと言ってきていて、1番目のエントリについてそれを表示させると以下のようになります。

[code]

    PluginProcess(52708) deny file-write-unlink /private/var/folders/<中略>/C/com.apple.sandbox
    
    Process:         PluginProcess [52708]
    Path:            /System/Library/Frameworks/WebKit.framework/Versions/A/PluginProcess.app/Contents/MacOS/PluginProcess
    Load Address:    0x2000
    Identifier:      com.apple.WebKit.PluginProcess
    Version:         11601.4.4 (11601)
    Build Info:      1-WebKit2~7601004004000000
    Code Type:       i386 (Native)
    Parent Process:  Safari [331]
    
    Date/Time:       2016-01-28 11:42:56.401 +0900
    OS Version:      Mac OS X 10.11.3 (15D21)
    Report Version:  8
    
    <後略>
    
[/code]

後略以降はコールスタックが続いているようです。これを見る限り webkit に関連するファイルのようで deny や unlink
なんて出ていることから消すのに失敗したのでしょうか。その時に巻き込まれて tmux のソケットも消された? 全部推測ですけど。この時 safari
で何をやっていたかというとなんとも覚えてないですね。

ログに記録された文言でぐぐってみていますけど芳しい情報を見つけられないでいます。とりあえずこういう事実があったということだけ書いておきます。次はソケットを監視しつつ
safari をいじめてみることでしょうか。

### 2016/1/28 23:57追記

`(server-start)` で起動する Emacs サーバの unix
ドメインソケットも消されることがわかりました。同一犯による犯行なのかわかりませんが、ソケットを消しまくる奴がそんなにたくさんいるとは思えません。なんにしろ大変迷惑な話です。まいったな。こっちも
`M-x server-start` すりゃいいといえばいいんですがね…。




実際に試してはいないのですが、この辺はどうでしょう？

> opensnoopコマンドは、特定のファイルやフォルダにアクセスしたプロセスをリストアプしてくれる便利なユーティリティです。

<http://yamaqblog.tokyo/?p=16811>

> launchdのWatchPathsによるファイル監視

<http://qiita.com/uraura/items/4bb0663e670fbaba1083>

「mac file audit」でぐぐるとけっこう見つかるようです。

