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.