losetup --detach 不删除环回设备

losetup --detach 不删除环回设备

我正在尝试分离环回设备。

推测losetup --detach可能成功(没有错误消息和返回代码 0),但设备仍然存在。

有任何想法吗?

root@Cassiopeia:~# losetup -a
/dev/loop1: [2053]:5243868 (/var/lib/snapd/snaps/core_6034.snap)
/dev/loop6: [2053]:19401380 (/tmp/imagefile)
/dev/loop4: [2053]:5249290 (/var/lib/snapd/snaps/canonical-livepatch_49.snap)
/dev/loop2: [2053]:5243293 (/var/lib/snapd/snaps/canonical-livepatch_50.snap)
/dev/loop0: [2053]:5249134 (/var/lib/snapd/snaps/core_5897.snap)
/dev/loop5: [2053]:5249130 (/var/lib/snapd/snaps/core_6130.snap)
/dev/loop3: [2053]:5244442 (/var/lib/snapd/snaps/canonical-livepatch_54.snap)
root@Cassiopeia:~# losetup --detach /dev/loop6
root@Cassiopeia:~# echo $?
0
root@Cassiopeia:~# losetup -a
/dev/loop1: [2053]:5243868 (/var/lib/snapd/snaps/core_6034.snap)
/dev/loop6: [2053]:19401380 (/tmp/imagefile)
/dev/loop4: [2053]:5249290 (/var/lib/snapd/snaps/canonical-livepatch_49.snap)
/dev/loop2: [2053]:5243293 (/var/lib/snapd/snaps/canonical-livepatch_50.snap)
/dev/loop0: [2053]:5249134 (/var/lib/snapd/snaps/core_5897.snap)
/dev/loop5: [2053]:5249130 (/var/lib/snapd/snaps/core_6130.snap)
/dev/loop3: [2053]:5244442 (/var/lib/snapd/snaps/canonical-livepatch_54.snap)

答案1

我知道它很旧,但我刚刚遇到了类似的问题。

之所以如此,是因为设备仍然处于打开状态,因此不必安装它。尝试 lsof 和类似的命令来查找它是什么。

在我的情况下,它被分开挂在另一个终端上;)

答案2

不久前我也遇到过这种情况,并注意到这种情况可以通过多种方式发生:

  • 如果您通过某个终端访问了其中一个目录(例如,使用过cd并且您没有关闭所述终端或者您仍在这些目录中)

  • 如果其他进程/命令正在使用已安装的循环设备/目录。

基于回答,您可以使用:

fuser -c /dev/loop0
fuser -d /dev/loop0
fuser -f /dev/loop0

获取所有必要的信息,例如PID等。

然后您可以使用fuse -k或者kill -9如果您真的必须,但要知道像这样强制终止进程可能是一个坏主意。

如果你想尝试优雅地 kill它,(比如说,如果您不知道如何访问使用安装/循环设备的进程):

kill PID

应该管用。

最后,鉴于这是关于snap(基于您帖子的输出)您大概不应尝试删除或卸载它们,除非您想完全卸载快照或删除单个快照包。

相关内容