Процесс 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

Другие вопросы по тегам