如何告诉 systemctl 在空闲时自动卸载驱动器并在卸载后删除目录?

如何告诉 systemctl 在空闲时自动卸载驱动器并在卸载后删除目录?

我在 fstab 中有此条目:

LABEL=cache /disks/cache ext4 rw,user,x-mount.mkdir,relatime,noauto,errors=remount-ro,x-systemd.idle-timeout=120min  0 0

我期望做的是:

  1. 每当我需要时,将带有标签缓存的磁盘安装在 /disks/cache 上
  2. 创建路径 /dsisks/cache(如果不存在)
  3. 向我的用户或任何有缺陷的用户授予 +rwx 权限
  4. 如果磁盘在 1 小时后空闲,则自动卸载该磁盘

为什么步骤 4 不起作用以及如何在卸载后删除该文件夹,是否有 x-umount.rmdir 选项?

答案1

您所描述的内容无法在 fstab 中完成。

以下是典型的磁盘挂载方式:

  • 将它们添加到 fstab 中,以便在启动时自动安装它们。 (fstab 中的defaultsor选项auto可以执行此操作。)
  • 手动挂载它们,可以以 root 身份指定所有参数,也可以仅作为挂载点或设备手动挂载,并使用 fstab 中的其余选项,或者以用户身份使用 fstab 中列出的条目并使用noauto,user第四列中的选项。
  • 使用udisk自动挂载热插入磁盘,例如CDROM和U盘,通常挂载在/media目录上。然而,这仅根据用户需求卸载。 U 盘通常安装在设备插入上,但也可以从命令行触发。
  • 当引用目录时,使用 autofs 按需挂载它们,并在超时后卸载它们,并且不再使用它们。

Autofs 的配置方式是,每行列出一个托管顶级目录,/etc/auto.master每个托管目录都有一个配置文件,每个配置文件都列出托管目录的子目录。

例如,auto.master 可以列出,/etc/auto.misc而 auto.master 又可以列出许多文件系统或具有潜在文件系统的设备。 autofs 附带的默认 auto.misc 列表floppy(默认情况下被注释掉)/misc/floppy如果被访问并且文件系统在该设备上可用,则将安装该列表。

来自 auto.master 的示例行:

/misc  /etc/auto.misc
/home  /etc/auto.home
/disks  /etc/auto.disks   --timeout=3600

auto.misc 中的示例行:

floppy         -fstype=auto            :/dev/fd0

来自 auto.home 的示例行:

someuser         homeserver:/export/home/someuser

Autofs 可以执行您要求的所有操作,除了设置权限(通常从已挂载文件系统上的根目录的权限继承)或挂载选项(如果文件系统支持)。上面的(未经测试的)磁盘行需要一个相应的/etc/auto.disks文件来描述您想要安装的文件系统/disks/

答案2

通过创建每个设备的自动挂载文件systemd。为此,请创建一个/etc/systemd/system/diskname.automount包含以下内容的文件:

[Unit]
Description=Automountaje de discos de usuario
After=blockdev@dev-disk-by\x2dlabel-cch.target

[Automount]
Where= mountpoint
TimeoutIdleSec=10

[Install]
WantedBy=multi-user.target

将 mountpoint 替换为所需位置,并确保该位置已正确分配给 中的单元驱动器/etc/fstab

它应该直接工作。

相关内容