标签: stat

如何找到文件的创建日期?

我想找出特定文件的创建日期,而不是修改日期或访问日期。

我已经尝试过ls -ltrhstat filename

linux stat timestamps files

121
推荐指数
6
解决办法
37万
查看次数

ext4 上的出生是空的

我刚刚阅读了 的Birth部分,stat似乎 ext4 应该支持它,但即使是我刚刚创建的文件也将其留空。

 ~  % touch test                                                       slave-iv
 ~  % stat test.pl                                                     slave-iv
  File: ‘test.pl’
  Size: 173             Blocks: 8          IO Block: 4096   regular file
Device: 903h/2307d      Inode: 41943086    Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/xenoterracide)   Gid: (  100/   users)
Access: 2012-09-22 18:22:16.924634497 -0500
Modify: 2012-09-22 18:22:16.924634497 -0500
Change: 2012-09-22 18:22:16.947967935 -0500
 Birth: -

 ~  % sudo tune2fs -l /dev/md3 | psp4                                  slave-iv
tune2fs 1.42.5 (29-Jul-2012)
Filesystem volume name:   home
Last mounted on:          /home
Filesystem UUID: …
Run Code Online (Sandbox Code Playgroud)

filesystems ext4 stat

100
推荐指数
5
解决办法
5万
查看次数

这个过程 STAT 表示什么?

在此处输入图片说明

如果您查看STAT column上图,您会看到Ss S S< SN and R+ 这表示什么?Process states. 如果是,那么意义'Ss S< SN and R+'何在?

process ps process-management stat

59
推荐指数
1
解决办法
10万
查看次数

什么是“奇怪的文件”?

我正在使用的应用程序不会以以下用户消息开头: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

当我使用时ls,文件显示如下:

?--------- 1 root root     0 Dec 31  1969 .config
Run Code Online (Sandbox Code Playgroud)

在文件上运行 stat 给了我这个:

% stat .config
  File: .config
  Size: 0           Blocks: 0          IO Block: 4096   weird file
Device: 2dh/45d Inode: 9799944     Links: 1
Access: (0666/?rw-rw-rw-)  Uid: ( 1000/     sleblanc)   Gid: ( 1000/         sleblanc)
Access: 1969-12-31 19:00:00.000000000 -0500
Modify: 1969-12-31 19:00:00.000000000 -0500
Change: 2018-04-07 23:40:22.549653691 -0400
Run Code Online (Sandbox Code Playgroud)

最令人惊讶的是这里提到了一个“奇怪的文件”。

什么是奇怪的文件?

filesystems stat

38
推荐指数
1
解决办法
3110
查看次数

是否仍然没有 Linux 内核接口来获取文件创建日期?

很长一段时间以来,Linux 都没有为文件创建日期而烦恼,因为它常用的文件系统都不支持它们。但是现在,常用的 2 个文件系统(NTFS 和 ext4)都记录文件创建日期。

stat然而,该命令仍然Birth: -在 ext4 文件系统上输出,即使我们可以看到 ext4 使用debugfs -R 'stat <inode_number>' /dev/file_device.

当我调查这是为什么时,我看到其他人最近已经提交了一份关于它的错误报告,并且响应链接到一个上游问题,该问题只是指出“目前没有 Linux 内核接口来获取该信息 [文件创立日期]”。在我看来,这显然仍然如此,因为人们多年来一直要求stat显示此信息(并且stat确实输出一个Birth字段,即使它显然不支持它!他们是否在预期中添加了它?)

那么目前是否还没有Linux内核接口来获取文件创建日期?有计划实施吗?

filesystems stat

24
推荐指数
1
解决办法
3099
查看次数

OSX 上的 stat 输出

我想使用该stat命令来获取有关文件的信息。我这样做了:

Josephs-MacBook-Pro:Desktop Joseph$ echo 'hello' > info.txt
Josephs-MacBook-Pro:Desktop Joseph$ stat info.txt
16777220 21195549 -rw-r--r-- 1 Joseph staff 0 6 "Dec 21 20:45:31 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" 4096 8 0 info.txt
Run Code Online (Sandbox Code Playgroud)

第 3 行和第 4 行是我得到的输出。每当我使用stat命令时都会发生这种情况。与此同时,互联网上的每个人都会得到类似的东西:

File: `index.htm'
Size: 17137 Blocks: 40 IO Block: 8192 regular file
Device: 8h/8d Inode: 23161443 Links: 1
Access: (0644/-rw-r--r--) 
Uid: (17433/comphope) Gid: ( 32/ www)
Access: 2007-04-03 09:20:18.000000000 -0600
Modify: 2007-04-01 23:13:05.000000000 …
Run Code Online (Sandbox Code Playgroud)

osx stat portability

19
推荐指数
2
解决办法
2万
查看次数

stat:文件的修改时间戳

我用来stat -f %m .bashrc在 osx 上获取我的 .bashrc 的修改时间。但是当我在 ubuntu 上运行相同的命令时,它吐出错误:

stat: cannot read file system information for %m': No such file or directory

有没有兼容的方法来实现这一目标?

bash stat timestamps files portability

14
推荐指数
3
解决办法
1万
查看次数

比较两个文件修改日期

我正在创建一个通用的编译/转译系统。了解文件是否已经编译/转译的一种方法是比较源文件和目标文件的修改日期。

我需要编写一个可以做到这一点的 bash 脚本:

source_file=foo;
target_file=bar;

stat_source=$(stat source_file);
stat_target=$(stat target_file);
Run Code Online (Sandbox Code Playgroud)

但是如何从统计输出中提取日期并进行比较?有没有比stat比较文件的最近修改时间更好的方法?

如果我在日志文件上调用 stat ,我会得到:

16777220 12391188 -rw-r--r-- 1 alexamil staff 0 321 "Jun 22 17:45:53 2017" "Jun 22 17:20:51 2017" "Jun 22 17:20:51 2017" "Jun 22 15:40:19 2017" 4096 8 0 test.log
Run Code Online (Sandbox Code Playgroud)

AFAICT,时间粒度不超过秒。如果可能的话,我需要得到比这更细粒度的东西。

stat timestamps files

14
推荐指数
2
解决办法
3万
查看次数

inotify 是否会在写入开始或完成时触发通知?

想象两个进程,一个读取器和一个写入器,通过 ext3 fs 上的常规文件进行通信。ReaderIN_MODIFY对文件有一个 inotify监视。Writer 在一次write()调用中将 1000 个字节写入文件。Reader 获取 inotify 事件,并调用fstat文件。读者看到了什么?

  1. 是否有任何保证 Reader 将至少获得 1000 美元st_size的文件?从我的实验来看,似乎不是。

  2. 有没有保证 Reader 实际上可以read()1000 个字节?

这发生在严重的 I/O 绑定框上。例如,sar显示大约 1 秒的等待时间。在我的情况下,Reader 在调用之前获得 inotify 事件后实际上等待了 10 秒stat,并且得到的结果太小。

我曾希望在文件准备好之前不会传递 inotify 事件。我怀疑实际发生的是 inotify 事件write()在 Writer 中的调用期间触发,并且只要数据准备就绪,系统上的其他进程实际上都可以使用该数据。在这种情况下,10 秒是不够的。

我想我只是想确认内核实际上按照我猜测的方式实现了 inotify。另外,如果有任何选择,可能会改变这种行为?

最后-考虑到这种行为,inotify 的意义何在?无论如何,在您获得事件后,您将不得不轮询文件/目录,直到数据实际可用为止。不妨一直这样做,而忘记 inotify。

*** 编辑 ** * * 好吧,正如经常发生的那样,我看到的行为实际上是有道理的,现在我明白了我真正在做什么。^_^

我实际上是在响应文件所在目录上的 IN_CREATE 事件。所以我实际上是在 stat()'ing 文件以响应文件的创建,不一定是 IN_MODIFY 事件,它可能稍后到达。

我将更改我的代码,以便在收到 IN_CREATE 事件后,我将订阅文件本身的 IN_MODIFY,并且在收到 IN_MODIFY 事件之前我不会实际尝试读取文件。我意识到那里有一个小窗口,我可能会错过对文件的写入,但这对我的应用程序来说是可以接受的,因为在最坏的情况下,文件将在最大秒数后关闭。

linux stat files inotify

13
推荐指数
1
解决办法
4728
查看次数

如何检查文件的组权限

我想从 bash 脚本检查文件的组权限。具体来说,我需要检查文件是否具有组可写位。

就是这样。就那么简单。然而:

  1. 我也需要它是便携的。
  2. test -w <file 不会告诉我它是否是组可写的。
  3. 的输出ls -ld对人类很好,但对脚本不太确定。从技术上讲,我可以解析输出,例如drwxrwxr-x提取组位,但这似乎很脆弱。
  4. statOS X 和其他系统之间的接口完全不兼容。
  5. find <file> -perm ... 不可能是答案?

ls bash permissions stat

13
推荐指数
2
解决办法
1万
查看次数