小编Wil*_*ell的帖子

uname 已损坏:如何确定当前正在运行的内核?

> uname -r
FATAL: kernel too old
> cat /proc/cmdline
FATAL: kernel too old
Run Code Online (Sandbox Code Playgroud)

/boot 中有 3 个 *.vmlinuz-linux 文件。如何确定当前正在运行哪个内核?

请注意,我在有限的环境中运行,使用的外壳最少。我也试过:

> sh -c 'read l < /proc/version; echo $l'
FATAL: kernel too old
> dd if=/proc/version
FATAL: kernel too old
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

linux glibc

13
推荐指数
3
解决办法
1907
查看次数

ls -f 有什么意义(或者,为什么会挂起?)

我有一个包含大约 100,000 个文件的目录。ls -f 挂了超过一分钟。我运行了 strace,并立即开始看到 getdents,所以 ls 显然正在读取目录。我还看到很多对 brk 的调用,所以 ls 显然是在内存中缓冲内容。我编写了一个调用 readdir 并输出文件名的简单程序,它立即响应。但是 ls -f 不提供输出。是什么赋予了?我认为 -f 的全部意义在于它导致 ls 除了 readdir 什么都不做。是否有一种可移植、可靠的方法来列出目录的内容?(注意,这是来自 Linux 上 gnu 的 coreutils 的 ls。)

-编辑-

有一个别名,但是“/bin/ls -1f > /dev/null”需要 8 到 15 秒,“/bin/ls -1fx > /dev/null”需要 4 到 11 秒,但是一个简单的程序这只是 readdir 需要 0.011 秒。我需要做什么才能使 gnu ls 不烂?

linux ls gnu coreutils

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

为什么执行`git status`会改变后续`git diff-index`的结果?

考虑:

$ git --version
git version 2.20.1 (Apple Git-117)
$ git diff-index --quiet HEAD ; echo $?
1
$ git status > /dev/null
$ git diff-index --quiet HEAD ; echo $?
0
Run Code Online (Sandbox Code Playgroud)

这是在具有不区分大小写文件系统的 macos 上。(我不知道这是否相关。)在发生这种情况的主机上,有一个运行 debian 的 docker 镜像并挂载了相同的目录,而在 docker 镜像中,发生了相反的行为:

$ git diff-index --quiet HEAD ; echo $?
0
# At this point, `git status` was invoked outside the docker image
$ git --version
git version 2.20.1
$ git diff-index --quiet HEAD ; echo $?
1
Run Code Online (Sandbox Code Playgroud)

需要说明的是,这里执行的命令顺序是:git diff-index …

git docker

4
推荐指数
1
解决办法
384
查看次数

标签 统计

linux ×2

coreutils ×1

docker ×1

git ×1

glibc ×1

gnu ×1

ls ×1