Процесс mysqld удален в lsof
Сегодня, запустив lsof на сервере, я обнаружил, что mysqld отображается как удаленный. Кто-нибудь сталкивался с чем-то подобным раньше, или есть объяснение этому. Это ошибка?
lsof | grep /usr/sbin/mysqld
mysqld 2589 mysql txt REG 253,1 12681241 312101 /usr/sbin/mysqld (deleted)
2 ответа
Убедитесь, что на самом деле двоичный файл mysqld присутствует в файловой системе:
ls -la /usr/sbin/mysqld
Если это так, вы, вероятно, обновили mysql, но не перезапустили демон, следовательно, двоичный файл в памяти был удален и теперь отличается от того, который находится в файловой системе.
Это заставляет меня верить, что mysql
пакет был обновлен и mysqld
не был перезапущен. Старый двоичный файл был удален, а новый двоичный файл установлен.
В Linux удаление (отмена связи) открытого файла на самом деле не удаляет содержимое файла. Процессы, которые удерживали файл открытым до отмены связи, будут по-прежнему иметь доступ к файлу до его выхода. Когда все процессы закрывают несвязанный файл, содержимое файла становится недоступным.
В этом случае, mysqld
из старой версии пакет все еще работает и /usr/sbin/mysqld
ссылка на новую версию файла
Интересный факт: вы можете получить исходный файл, используя cp
:
cp /proc/2589/exe /tmp/mysqld