相关疑难解决方法(0)

“ls -l <​​随机文件>”与“wc -c <随机文件>”的字节数

有没有什么可能的情况

ls -l file.txt
Run Code Online (Sandbox Code Playgroud)

显示的字节数与

wc -c file.txt
Run Code Online (Sandbox Code Playgroud)

在一个脚本中,我发现了这两个值的比较。那可能是什么原因?甚至可能有同一个文件的不同字节数吗?

ls wc byte

26
推荐指数
3
解决办法
1244
查看次数

在什么类 UNIX 系统/文件系统上,stat() 返回的 st_blocks 字段不是一些 512 字节单位?

我总是假设/ ... 系统调用st_blocks返回的字段用于获取文件的磁盘使用情况以 512 字节为单位表示。stat()lstat()du

检查POSIX 规范,我现在看到 POSIX 对此没有做出保证。其自身功能的文档perlstat()也警告不要做出这种假设。

无论如何,正如 POSIX 所指示的,该块大小与st_blksize返回的字段无关stat(),因此必须在其他地方找到。

检查 GNUdu或 GNUfind源代码,我看到 HP/UX 使用 1024 字节单位的证据。GNUfind调整其-printf %b输出以始终提供多个 512 字节单位,这可能是我困惑的根源。

目前是否还有其他仍在使用的类 Unix 系统st_blocks不是以 512 字节为单位表示的?这可以依赖于文件系统吗(正如 POSIX 所建议的那样)?我想安装 HP/UX NFS 共享可以做到这一点。

stat api portability

9
推荐指数
1
解决办法
690
查看次数

如何仅在特定文件具有特定大小时运行命令

如何仅在某个文件超过定义的大小时才执行命令?两者最终都应该作为 crontab 中的单行代码运行。

伪代码:

* * * * * find /cache/myfile.csv -size +5G && echo "file is > 5GB"
Run Code Online (Sandbox Code Playgroud)

linux find

7
推荐指数
2
解决办法
1514
查看次数

为什么 wc 和 stat 对 /proc/[pid]/cmdline 产生不同的结果?

我试图了解原因wcstat报告不同的事情/proc/[pid]/cmdline

wc说我的 shellcmdline文件大小为 6 个字节:

$ wc --bytes /proc/$$/cmdline
6 /proc/10425/cmdline
Run Code Online (Sandbox Code Playgroud)

stat表示文件大小为 0 字节:

$ stat --format='%s' /proc/$$/cmdline
0
Run Code Online (Sandbox Code Playgroud)

file同意stat

$ file /proc/$$/cmdline
/proc/10425/cmdline: empty
Run Code Online (Sandbox Code Playgroud)

cat给出这个输出:

$ cat -vE /proc/$$/cmdline
-bash^@
Run Code Online (Sandbox Code Playgroud)

所有这些都在 Linux 上进行,而不是在任何其他 *nix 操作系统上进行。

stat和程序是否wc有不同的算法来计算文件中的字节数?

linux stat wc

6
推荐指数
1
解决办法
837
查看次数

标签 统计

linux ×2

stat ×2

wc ×2

api ×1

byte ×1

find ×1

ls ×1

portability ×1