cachegrind.out.xxxxxx が /private/var/tmp に大量に作成されてディスク容量を圧迫

Mac OS X (Yosemite) で最近ディスクの空き容量がやたら少なくなっているので、調べてみた。

$ sudo du -sh /*

$ sudo du -sh /private/*

$ sudo du -sh /private/var/*

と調べて行くと、/private/var/tmp が200GBくらいある。
/private/var/tmp を見てみると、cachegrind.out.50526 のようなファイルが大量にあった。
これはXdebugのプロファイラーが出力するファイルらしい。(MacPortsのxdebugを使用している。)
Xdebugはエラー時にスタックトレースを表示したり、(Eclipseが必要だが)ステップ実行でデバッグできたりと便利なのだ。

で、この cachegrind.out.xxxxxx を rm で削除しようとしたら、

$ sudo rm cachegrind.out.*
-bash: sudo: Argument list too long

となって削除できない。
ファイルが多すぎるため、シェルが * を展開すると Argument list too long になってしまうのだ。

find -exec で削除した。

$ cd /private/var/tmp
$ sudo find . -name 'cachegrind.out.*' -maxdepth 1 -exec rm {} \;

200GBくらい空いた。

find -exec については、以前書いた以下の記事を参照してください。
findで検索した結果を削除したりgrepする方法

このままではまたどんどん cachegrind.out.xxxx がたまってくるので、xdebugの設定を変更して、プロファイラーが/private/var/tmp でなく、/tmp に出力するようにした。
(ついでにトレースファイル出力先も /tmp にしておいた。)
こうしておけば、再起動時に削除されるだろう。

/opt/local/etc/php53/php.ini
xdebug.profiler_output_dir と xdebug.trace_output_dir を追加。

[xdebug]
xdebug.profiler_enable=On
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.idekey=ECLIPSE_DBGP
xdebug.profiler_output_dir=/tmp/ ; プロファイラーのファイル出力先
xdebug.trace_output_dir=/tmp/ ; トレースファイル出力先

Xdebug: Documentation.