Landscape トップページ | < 前の日 2004-12-06 2004-12-07 次の日 2004-12-08 >

Landscape - エンジニアのメモ 2004-12-07

Unix でテンポラリファイルを確実に消す方法


* Unix でテンポラリファイルを確実に消す方法

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [unix]

知らなかった。定番なのか。

[PHP-users 23600] Re: バージョンアップ後にunlinkでエラー
http://ns1.php.gr.jp/pipermail/php-users/2004-November/02412 ...
UNIX 系の OS では一時的に作成したテンポラリファイルを確実に
消す方法としては

    open 直後に unlink して、そのまま使いつづける

というのは定番的な tips だったりします。

  というのは、どれかのプロセスがそのファイルをオープンしていた場合、そ
のオープンしている最後のプロセスがファイルを close するまで、そのファ
イルは存在しつづけることが保証されるからです。確か POSIX でもそう決まっ
ていたはず。

  どういうときに嬉しいかというと、先ほども書いたようにプログラム内で一
時ファイルを作るときです。プログラム内で一時ファイルを使用終了したら
unlink するという処理でも良いのですが、それではエラーで終了するときに
もいちいち unlink しなければなりませんし、予想外の異常終了の場合は一時
ファイルが残ったままになってしまいます。open 直後に unlink しておけば、
例えどんなケースであれ、プロセスが終了したら確実にファイルは消去されま
す。

- Perl でテンポラリファイルを確実に消す方法を試してみる

Perl で試してみた。ファイルを作ってすぐに unlink で削除し、10秒待つ。その後ファイルの中身を print するワンライナー。
$ perl -e 'open(TMP, "+> tmpfile"); print unlink("tmpfile"); print TMP 256; sleep 10; seek(TMP, 0, 0);  print join("", <TMP>);'

上記を実行すると、確かに unlink しているのに読み書きができた。10秒の sleep 中に他のシェルから ls を発行したが、ファイルは無かった。

試したのは FreeBSD 4.10-RELEASE-p5 と perl v5.8.4 built for i386-freebsd-64int の環境。

- PHP-users はときどき役に立つ投稿がある

PHP-users メーリングリストは、ときどきこういう役に立つ情報がある。ほとんど読んでないし、もう購読やめようかなあと思ってるんだけど、こういうためになる投稿を見つけるたびにもうちょっと購読を続けようという気にさせられる。

以下のような投稿を見てちょっとショックを受けたりもした。

[PHP-users 23758] Re: DB の暗号化について
http://ns1.php.gr.jp/pipermail/php-users/2004-November/02427 ...
そもそも、80番ポートしか空いてない、WEBサーバの前に80番だけ通すFW置く意味はないし、
マルチホームな、WEBサーバの、プライベートセグメントに、さらに、DBのポートをあけた
FWを置いても仕方が無い.

ところが、1段でも、関所が多い方が,安心
というのですよ、エセコンサル屋は.

もちろん、FWも、ロードバランサも、壊れたら困るから2重化です.

DMZ という概念がない。外向きの接続は全部開放。外部からの接続のフィルタリングも、OS が持つファイアウォールだけで十分だという主張。

このコンサルの提案は正しいと思うんだけどなあ。どのマシンが乗っ取られたとしても被害を最小に抑えるには、境界にファイアウォールが必要。それに port 80しか開けてないのって本当なのかな。リモートからメンテしたりするなら、他も開けているはず。この提案が却下されるなんて、どんな案件なんだろう?

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。