Tim*_*idt 7 linux mount systemd
我希望 systemd on在文件系统挂载之前和卸载之后mount /mnt/test自动调用一个程序(在现实生活cryptsetup中解锁底层设备,在此处进行测试echo)。
与/etc/systemd/system/stickbak-encryption.service:
[Unit]
Description=stickbak encryption
Before=mnt-test.mount
StopWhenUnneeded=true
[Service]
Type=oneshot
ExecStart=/bin/echo Unlock device.
RemainAfterExit=true
ExecStop=/bin/echo Lock device.
[Install]
RequiredBy=mnt-test.mount
Run Code Online (Sandbox Code Playgroud)
和/etc/fstab(部分):
/dev/$DEVICE /mnt/test auto noauto 0 0
Run Code Online (Sandbox Code Playgroud)
这systemctl start mnt-test.mount分别适用于和systemctl stop mnt-test.mount(以 root 身份)(在守护进程重新加载并启用服务之后)。
mount /mnt/test但是,Onsystemctl status mnt-test.mount stickbak-encryption显示后一个服务是inactive (dead),而前者是active (mounted)。
我如何(或我不能?)建立一个在/bin/mount被调用时也受到尊重的依赖关系?挂载单元的状态显示mount /mnt/test似乎已转换为ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto,因此很明显 systemd 得到了通知。
我最近问自己同样的问题,但我很快意识到它不是这样工作的。
当您使用mount命令行程序时,systemd 不参与:mount读取/etc/fstab(或从命令行获取选项)并挂载设备。当你启动一个 systemd 挂载单元时,它被 systemd 解析,它在内部使用挂载系统调用来执行挂载。
所以当你使用mount.
mount顺便说一句,using和 systemd 在它们接受的在/etc/fstab. Systemd 解析文件并创建它然后使用的挂载单元。当它这样做时,它接受的参数少于mount需要的参数。
如果你使用 systemd,那么你只需要提供设备和挂载点,但是mount需要更多的选项,比如文件系统和选项。