0

在 Linux 系统上(我面前的是 Ubuntu 10.04,但这不重要),我如何知道在同一秒内创建的两个文件中的哪一个是最先创建的?我控制的过程既不会创造自己,也不会创造自己。在所有其他方面,我认为 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

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

总之,如果硬件提供它,我认为你在那里有足够的精度。

于 2011-07-14T12:43:13.140 回答