如何移除 solaris 中的“门”

如何移除 solaris 中的“门”

我在 solaris 10 中有一个“door”类型的文件(这是一种进程间通信方式)。它不知怎么的遗留了下来,我想删除它。我不能只用 rm 删除它...

ls -l
total 0
Dr--r--r--   1 root     root           0 Oct 12  2012 name_service_door
# rm name_service_door 
rm: name_service_door not removed: Device busy
# lsof name_service_door 

显然,某些进程仍在使用它。但是,lsof 不显示任何内容。从“ps -elf”也不清楚谁在使用这个文件。我该如何删除这个文件?

更新:我重新启动了服务器,这当然会终止所有进程并释放文件。然后我可以删除它。但是,我仍然想知道如何在不重新启动的情况下执行此操作(在生产环境中,这并不总是一种选择)。

答案1

要找出设置或安装的文件。请以 root 身份运行此命令。

pkgchk -l -p /files
  • 告诉您使用哪些包来创建命令中给出的文件。

例子

pkgchk -l -p *path to file*/name_service_door

如果文件未随包一起添加,则此操作将不起作用。例如,您使用 tar 文件安装它。

如果该文件是通过包安装的,那么您可以删除该包,这将删除该文件。

以 root 身份

pkgrm packagename

您还可以使用 svcadm 命令停止或重新启动该服务。

以 root 身份

svcadm [启用|禁用|重新启动|刷新] 服务

我希望这有帮助

答案2

事实证明它是 chroot 内部的挂载,因此卸载后,我就可以将其删除。

相关内容