Запустив 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