为了理解为什么我不断收到以下错误
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
在使用命令时,sudo find / -type s
终端提示如下内容
find: ‘/proc/31348/task/31348/fd/5’: No such file or directory
find: ‘/proc/31348/task/31348/fdinfo/5’: No such file or directory
find: ‘/proc/31348/fd/5’: No such file or directory
find: ‘/proc/31348/fdinfo/5’: No such file or directory
这是什么意思?
答案1
发生这些错误是因为这些文件属于特殊的文件系统procfs
(安装在 处/proc
)。proc 文件系统以分层文件式结构呈现有关进程的信息,因此当 find 尝试访问这些特殊文件时,它们不再存在。
要忽略这些错误,请添加-xdev
GNU find
(或-x
BSD find
),例如
sudo find / -type s -xdev
-xdev
不要将目录下降到其他文件系统上。
答案2
/proc
是一个伪文件系统,下面的文件/proc
实际上并不存在于您的硬盘上。它们包含有关当前正在运行的进程的信息。这些错误发生的原因是某些进程在find
运行时退出。这是完全正常的。
(实际上,如果您find
反复运行并使用诸如ps a | grep find
获取命令的 PID 之类的命令find
,您将看到与错误消息中相同的 PID。这有点像当您执行ps a | grep ps
命令时grep
也会被“抓取”。)
答案3
find 抱怨,因为她看到一个进程 ID 为 31348 的僵尸进程。
每次使用 find 时,它都会提示进程 4052,
find: ‘/proc/4052/task/4052/ns/net’: No such file or directory
find: ‘/proc/4052/task/4052/ns/uts’: No such file or directory
find: ‘/proc/4052/task/4052/ns/ipc’: No such file or directory
find: ‘/proc/4052/ns/net’: No such file or directory
find: ‘/proc/4052/ns/uts’: No such file or directory
find: ‘/proc/4052/ns/ipc’: No such file or directory
[root@mylaptop /]# ps -ef | grep 4052
root 4052 4043 0 Jun19 ? 00:00:00 [sh] <defunct>
所以,
在我的情况下,这是一个僵尸进程,是在几个小时前创建的(在我的 Linux 操作期间)。“kill -9 4052”当然没有效果,它是一个僵尸进程,而僵尸进程是无法被杀死的。由于它只有一个可怜的孤独僵尸,所以我就让它不管了,直到下次重新启动。
:)