Назад | Перейти на главную страницу

Процесс mysqld удален в lsof

Запустив lsof на сервере сегодня, я обнаружил, что mysqld отображается как удаленный. Сталкивался ли кто-нибудь с подобным раньше, или этому есть объяснение. Это ошибка?

lsof | grep /usr/sbin/mysqld
mysqld     2589     mysql  txt       REG              253,1   12681241     312101 /usr/sbin/mysqld (deleted)

Убедитесь, что двоичный файл mysqld действительно присутствует в файловой системе:

ls -la /usr/sbin/mysqld

Если это так, вы, вероятно, обновили mysql, но не перезапустили демон, поэтому двоичный файл в памяти был удален и теперь отличается от файла в файловой системе.

Это заставляет меня думать, что mysql пакет был обновлен и mysqld не был перезапущен. Старый двоичный файл был удален и установлен новый двоичный файл.

В Linux удаление (отключение связи) открытого файла не приводит к удалению содержимого файла. Процессы, которые удерживали файл открытым до отмены связи, по-прежнему смогут получить доступ к файлу до его выхода. Когда все процессы закрывают несвязанный файл, содержимое файла становится недоступным.

В таком случае, mysqld из старой версии пакета все еще работает и /usr/sbin/mysqld ссылка на новую версию файла.

Интересный факт: вы можете вернуть исходный файл, используя cp:

cp /proc/2589/exe /tmp/mysqld