0

Linux システム (目の前にあるのは Ubuntu 10.04 ですが、それは問題ではありません) で、同じ秒内に作成された 2 つのファイルのどちらが最初に作成されたかをどのように確認できますか? 私が制御するプロセスは、それ自体を作成しません。他のすべての点では、ctime でうまくいくと思いますが、1 秒の解像度が問題です。

背景として、古くなった可能性のあるpidfileがそのpidで現在のプロセスを参照しているかどうかを確実に判断しようとしています。それを行うためのより良い方法があれば、私はすべての耳です.

4

2 に答える 2

0

ls -rtファイルヘッダーの精度がデフォルトのリスト時間形式で表示されるよりも高いことを期待して、ファイルを時間で並べ替えることができます。しかし、ファイルシステムに情報がない場合、これを行う方法はありません。

別のオプション?IDをファイルに追加して常にインクリメントすることもできますが、ファイルシステムからこのIDを読み込もうとすると(新しいプロセスを作成するときに)、ロックの問題が発生します。

では、PIDファイルが古くなっていないことをどのように確認できますか?回答:スクリプトを使用してdaemonください。プロセスをバックグラウンドで実行し、プロセスが終了するとすぐにPIDファイルが削除されるようにします。

于 2011-07-14T12:41:27.583 に答える
0

実際、最新のファイルシステムを備えた最新のUnicesでは、ファイルの変更時刻はtimespecに格納されています。詳細:

標準ではstat、このWRT回のように見えます。

struct timespec st_atim Last data access timestamp. 
struct timespec st_mtim Last data modification timestamp. 
struct timespec st_ctim Last file status change timestamp.

そして、timespec

time_t  tv_sec    seconds
long    tv_nsec   nanoseconds

だから、私のLinux2.6.39で統計を行う:

Access: 2011-07-14 15:38:20.016666721 +0300
Modify: 2011-06-10 03:06:12.000000000 +0300
Change: 2011-06-17 11:01:35.416667110 +0300

結論として、ハードウェアがそれを供給していれば、そこには十分な精度があると思います。

于 2011-07-14T12:43:13.140 に答える