> 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)
有什么想法吗?
我有一个包含大约 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 不烂?
考虑:
$ 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 …