[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00494] Re: .fd_history was lost
- Subject: [FDclone-users:00494] Re: .fd_history was lost
- From: "Akinori MUSHA" <knu@iDaemons.org>
- Date: Tue, 11 Apr 2006 17:34:21 +0900
さっそくの対応ありがとうございます。
At Mon, 10 Apr 2006 23:13:29 +0900,
Takashi SHIRAI wrote:
> ふむ。確かに NFS では lock が効かないので link(2) 辺りを使
> って疑似 lock をかけるのが定石ですね。
> 最近の NFS は普通に lock がかかってしまうものが多いので忘
> れていました。これは相手先の条件もあるので、やってみないこと
> には lock 不能な file system かどうかは判断不能ですね。
$HOME 以下でロックが効かないと動かないツールもいろいろあるので、
早くNFSサーバをリプレースないしアップグレードしたいと思っています。
> > 1. 別にロックファイルを作る
> > 2. open(2) の O_EXLOCK でアトミックにロックする
> > 3. 追記モード(a, a+, r+)でオープンして truncate させない
>
> O_EXLOCK は BSD 固有の option なので余り適切ではなさそうで
> す。
> また、2. と 3. とは lock 不能だった場合にコマンド履歴が保
> 存されないので、使い勝手としては truncate されてしまうのと大
> 差ないと思います。
過去の履歴が消えてしまったのはちょっと痛かったです。ログ機能が
付いているようなので、活用しようかな。
> そういうことであれば、fcntl lock で実装しておいて返り値は
> 無視するという実装でどうでしょうかね。
>
> blocking lock にしてるので、返り値を無視したところで lock
> が有効な環境では普通に lock がかかる筈です。lock が無効な環
> 境でのみ、file の同時書込みに対応出来ないということで。
> link lock の実装は、作成した lock file の後始末が面倒なん
> ですよね。割込まれた時とか異常終了した時とか考えると、そこま
> で苦労して実装することもないかと。
そうですね。シェルは外から殺されることも多いですし。
凝り出すと切りがないので、この対策で十分と思います。
--
/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp
"Different eyes see different things,
Different hearts beat on different strings --
But there are times for you and me when all such things agree"