我有一个自定义的 systemd 服务,可以在某些条件下自动安装一些分区。该服务执行包含一些安装命令的 shell 脚本。当我直接执行它时,一切正常,即使在 shell 脚本返回后分区也保持挂载状态。但是当我使用 systemd 启动它时,分区已安装,但在 shell 脚本返回后它们会自动卸载。我怎样才能让它们保持安装状态?
我的自定义 systemd 单元:
[Unit]
Description=Automatically mount secondary volumes
[Service]
User=root
WorkingDirectory=/opt/vmount
ExecStart=/opt/vmount/vmount.sh
Restart=no
[Install]
WantedBy=multi-user.target
答案1
我不知道 sh/bash 脚本中隐藏了什么。这不是通过 systemd 安装卷的正确方法。
下面的方式是systemd的持久挂载方式:
创造:
vim /etc/systemd/system/mnt-backup.mount
包含以下内容:
[Unit]
Description=proper mounting with systemd
[Mount]
What=/dev/sdc1
Where=/mnt/backup
Type=ext4
[Install]
WantedBy=multi-user.target
要安装该卷,只需启动它:
systemctl start mnt-backup.mount
接下来检查其 systemd 状态:
systemctl status mnt-backup.mount
并检查它是否确实安装了mount
。
为了使其持久:
systemctl enable mnt-backup.mount
笔记:所有命令都应以 root 身份执行,如果您使用 root 身份sudo
,则需要在 shell 中的所有命令前面加上它。