首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法卸载从脚本中挂载的/mnt

无法卸载从脚本中挂载的/mnt
EN

Unix & Linux用户
提问于 2021-01-02 11:04:16
回答 1查看 434关注 0票数 0

我有一个启动脚本,它执行以下命令:

代码语言:javascript
复制
sudo cryptsetup open /dev/sda3 dm_crypt && sudo mount -t btrfs /dev/mapper/dm_crypt /mnt && cd /mnt && ls -la && sudo -s

这基本上打开了我的LUKS设备,并安装了BTRFS根分区,并启动了一个根外壳以供进一步工作。

这一切都很好,但当我尝试去做的时候:

代码语言:javascript
复制
umount -f /mnt

在根壳中,我得到:

代码语言:javascript
复制
umount: /mnt: target is busy.

有人能告诉我为什么会这样吗?

如果启动脚本中的所有命令都作为相互的进程执行,我说得对吗?那么是什么让/mnt忙着呢?

这是lsof | grep /mnt的输出:

代码语言:javascript
复制
bash      1890                       liveuser  cwd       DIR               0,45        42        256 /mnt
sudo      2168                           root  cwd       DIR               0,45        42        256 /mnt

是因为根shell是脚本的子进程吗?

这对我来说没有任何意义。

约束:我将从子根shell中调用cryptsetup close

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-01-02 11:26:48

/mnt由两个进程保持忙碌:运行脚本的shell和sudo本身。您不能从根shell中更改它们的工作目录。

您可以更改您的脚本,这样它就不会cd到您的挂载点,或者您可以在退出根shell之前使用umount -l。后者将懒洋洋地卸载,当您退出shell时,sudo和父shell也将退出,从而释放挂载点。

如果您也想关闭LUKS卷,最好的方法是将其添加到脚本中:

代码语言:javascript
复制
sudo cryptsetup open /dev/sda3 dm_crypt && sudo mount -t btrfs /dev/mapper/dm_crypt /mnt && cd /mnt && ls -la && sudo -s
cd - && sudo umount /mnt && sudo cryptsetup close dm_crypt
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/627179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档