我偶然发现了几十个文件中/usr/bin
含有分号;
。如果我没记错的话,这样的文件是在写入某个程序打开的文件时创建的(例如在操作系统更新期间)。但是,我认为这些会在下次重新启动时被删除。然而,就我而言,这些文件未打开:
# find /usr -name \*\;\* | grep c++
/usr/bin/c++;5cf64746
/usr/bin/c++;5cfffc10
/usr/bin/c++;5cfb88d7
/usr/bin/c++;5cf8e8e4
/usr/bin/c++;5cfcd91f
/usr/bin/c++;5cc1f485
/usr/bin/c++;5cf4f405
/usr/bin/c++;5cfffc85
/usr/bin/c++;5cf7968b
/usr/bin/c++;5cfe28b9
/usr/bin/c++;5cff80b7
/usr/bin/c++;5cf57b84
/usr/bin/c++;5cfc4cbf
# lsof | fgrep /c++
Exit 1
问题:
我可以安全地删除这些文件吗?
他们首先为什么来这里?
电脑从来没有死机过,都是干净重启。它是CentOS 7系统。更新已安装yum
。
许多文件实际上是相同的(尽管所有索引节点都不同,我检查过):
# ll /usr/bin/c++?5*
-rwxr-xr-x. 2 root root 772688 Mar 6 2018 /usr/bin/c++;5cc1f485
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cf4f405
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cf57b84
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cf64746
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cf7968b
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cf8e8e4
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cfc4cbf
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cfb88d7
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cfcd91f
-rwxr-xr-x. 4 root root 772688 Apr 10 2018 /usr/bin/c++;5cfe28b9
-rwxr-xr-x. 4 root root 772720 May 15 2018 /usr/bin/c++;5cff80b7
-rwxr-xr-x. 4 root root 772720 May 15 2018 /usr/bin/c++;5cfffc10
-rwxr-xr-x. 4 root root 772720 May 15 2018 /usr/bin/c++;5cfffc85
更新的解释还有意义吗?
答案1
我已经找到了创建这些文件的原因。我有一个进程在容器中运行(具有 Linux 内核挂载(文件系统)命名空间),由火狱。 Firejail 会屏蔽某些文件(例如可执行文件和库),防止容器内的进程访问它们。因此,当这些文件被yum update
/删除时,Linux 内核仍然会引用它们dnf update
。因此,当时它们没有被删除。
这也意味着这些文件可以在重新启动后安全地删除 - 或者实际上,在最后一个使用它们的容器进程退出后。
问题仍然是为什么当容器/计算机关闭时这些文件没有被删除。我怀疑这是这些机器上的内核(ext4 文件系统驱动程序?)中未修复的错误。