mysqld 进程在 lsof 中删除

mysqld 进程在 lsof 中删除

今天在服务器上运行 lsof 时,我发现 mysqld 显示为已删除。有人遇到过类似情况吗,或者对此有解释吗。这是一个错误吗?

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

答案1

验证文件系统上是否存在 mysqld 二进制文件:

ls -la /usr/sbin/mysqld

如果它在那里,您可能升级了 mysql 但没有重新启动守护进程,因此内存中的二进制文件已被删除,现在与文件系统上的二进制文件不同。

答案2

这让我相信该mysql软件包已更新且未mysqld重新启动。旧的二进制文件已被删除,并安装了新的二进制文件。

在 Linux 中,删除(取消链接)打开的文件并不会真正删除文件的内容。在取消链接之前保持文件打开的进程仍将能够访问该文件,直到它退出。当所有进程都关闭取消链接的文件时,文件的内容将无法访问。

在这种情况下,mysqld旧版本的包仍然在运行并且/usr/sbin/mysqld是指向新版本的文件的链接。

有趣的事实:您实际上可以使用以下方法恢复原始文件cp

cp /proc/2589/exe /tmp/mysqld

相关内容