FreeBSD QandA 2031
Q. /tmp に知らないファイルがあるんですが、消してよいですか?
A. そもそも /tmp には様々なテンポラリファイルが置かれます。当然その中には
今その瞬間において、使用中のファイルもあるかもしれません。従って、無闇
に消して良いというものではありません。
しかし、中にはプログラムが異常終了したとか、お行儀の悪いプログラムによっ
て、そのままほったらかしにされたファイルもあるでしょう。また、複数のユー
ザが使用するようなマシンでは、作業ファイルを /tmp に残したままにする人
もいるかもしれません。このような場合、いくつか対策が考えられます。
1. 相手が実体を持つ人の場合は、まずはその人に消してくれるように頼む。(^^;
2. 繁雑にリブートを繰り返すマシンなら、リブート時に自動的に消去してくれ
るように、rc.conf(5) に次の設定を追加する。ただし、セキュリティ的に
は少々マイナスかもしれない。
clear_tmp_enable="YES"
3. periodic(8) を利用して定期的に古い一時ファイルを消去する。この機能を
有効にするには /etc/periodic.conf に次の設定を追加します。詳細につい
ては periodic.conf(5) を参照。
daily_clean_tmps_enable="YES"
4. 手作業でファイルが使用中かどうか確認しながら消去する。これには
fstat(1), sockstat(1), netstat(1) などのコマンドが役に立つでしょう。
例えば、X をセットアップしたら、/tmp に `.X11-unix' というディレクトリ、
`.XF86Setup284' というディレクトリが出来ますが、`.XF86Setup284' は
XF86Setup を実行したときの作業用ファイルでしょうから消してよいでしょう。
しかし /tmp/.X11-unix/ は消してはダメです。それを ls(1) で見ると
% ls -l /tmp/.X11-unix/
srwxrwxrwx 1 root wheel 0 Oct 5 11:07 X0
^ここ
というファイルがあります。この先頭が s になっているものはソケットで
(see ls(1))、このソケットファイルを経由してデータをやりとりしている
プログラムがいるということです。
具体的にそのソケットを使っているプログラムを見るには sockstat(1) を
使います。
% sockstat -u
root kterm 1191 3 stream XF86_Mach64[245]:21
root kterm 1153 3 stream XF86_Mach64[245]:19
root kterm 1048 3 stream XF86_Mach64[245]:20
mat mozilla- 370 8 stream XF86_Mach64[245]:17
mat emacs-dl 316 4 stream XF86_Mach64[245]:18
mat emacs-dl 316 5 stream cannaserver[172]:8
root kterm 254 3 stream XF86_Mach64[245]:10
mat kinput2 250 3 stream XF86_Mach64[245]:8
mat kinput2 250 6 stream /tmp/.ki2-unix/_0-ja_JP
root XF86_Mac 245 1 stream /tmp/.X11-unix/X0
root XF86_Mac 245 6 stream /tmp/.X11-unix/X0
root XF86_Mac 245 7 stream /tmp/.X11-unix/X0
root XF86_Mac 245 8 stream /tmp/.X11-unix/X0
root XF86_Mac 245 9 stream /tmp/.X11-unix/X0
root XF86_Mac 245 10 stream /tmp/.X11-unix/X0
root XF86_Mac 245 11 stream /tmp/.X11-unix/X0
mat xinit 244 3 stream XF86_Mach64[245]:6
bin cannaser 172 0 stream /tmp/.iroha_unix/IROHA
bin cannaser 172 8 stream /tmp/.iroha_unix/IROHA
(略)
なので
- /tmp/.X11-unix/X0 を使っているのは XF86_Mach64 (Xサーバ)
- その X サーバと通信しているのは kterm や emacs や mozilla など
(つまり Xクライアント) ということがわかります。他の項目を見れば
- /tmp/.iroha_unix/IROHA を使っているのは cannaserver
- /tmp/.ki2-unix_0-ja_JP を使っているのは kinput2
ということも読み取れます。
ちなみに X サーバと X クライアントが
やりとりしている内容は、
「今そっちのウィンドウにマウスがのったよ」(X サーバから X クライアントへ)
「マウスボタンの右が押されたよ」 (X サーバから X クライアントへ)
「座標 (x,y) に赤色の円を描いて」 (X クライアントから X サーバへ)
といったことです。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。