如何判断首先创建了哪个文件?

时间:2011-07-14 12:32:57

标签: linux pid ctime

在Linux系统上(我前面的那个是Ubuntu 10.04,但这无关紧要),如何判断在同一秒内创建的两个文件中的哪一个是先创建的?我控制的过程既不会创造;在所有其他方面,我认为ctime会做到这一点,但1秒的分辨率是一个问题。

对于后台,我正在尝试可靠地确定可能过时的pidfile是否引用具有该pid的当前进程。如果有更好的方法,我会全力以赴。

2 个答案:

答案 0 :(得分:0)

您可以尝试ls -rt按时间对文件进行排序,希望文件头比默认列表时间格式显示更精确。但是如果文件系统没有这些信息,则无法做到这一点。

其他选择?您可以向文件添加ID并始终递增它,但只要您尝试从文件系统加载此ID(当您创建新进程时),就会遇到锁定问题。

那么如何确保PID文件不是陈旧的?答:使用the daemon script。它在后台运行一个进程,并确保在进程退出时立即删除PID文件。

答案 1 :(得分:0)

实际上,在具有现代文件系统的现代Unices中,文件修改时间存储在timespec中。详细说明:

The standardstat看起来像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

所以,在我的Linux 2.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

总之,如果硬件供应它,我认为你已经有足够的精度。