.png)
Я случайно нашел несколько десятков файлов, в /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 маскирует некоторые файлы (например, исполняемые файлы и библиотеки) от доступа процесса внутри контейнера. Поэтому эти файлы все еще используются ядром Linux, когда они удаляются с помощью yum update
/ dnf update
. Поэтому они не удаляются в это время.
Это также означает, что файлы можно безопасно удалить после перезагрузки или, точнее, после завершения последнего процесса контейнера, использующего их.
Остается вопрос, почему эти файлы не удаляются при выключении контейнера/компьютера. Я подозреваю, что это ошибка, не исправленная в ядре (драйвер файловой системы ext4?) на этих машинах.