如何在关机时正确运行此 systemd 服务?

如何在关机时正确运行此 systemd 服务?

我正在使用 登录时安装我的 Google Drive google-drive-ocamlfuse。问题是,现在关机或重启似乎会增加 2 分钟的暂停时间。

现在,如果我在关机之前卸载 Google Drive,那么一切都会按预期进行,并且不会出现暂停。

我检查了一些systemd服务并建立了一个新的服务,但我并不确切知道我在做什么(“有根据的猜测”)。

/etc/systemd/system/rs-shutdown.service

# Redsandro 2017-09-1 
# Unmount GoogleDrive to prevent shutdown delay.

[Unit]
Description=Unmount GoogleDrive on shutdown
Before=umount.target shutdown.target reboot.target halt.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/sh -c "umount /home/redsandro/GoogleDrive"

[Install]
WantedBy=multi-user.target

然后我跑了:

sudo systemctl enable rs-shutdown.service
sudo systemctl start rs-shutdown.service

但是关机仍然滞后 2 分钟。如果我想快速关机,我仍然需要手动卸载共享。

有什么解决方案吗,或者这仅仅是一个错误的地方去尝试做我想做的事情?

我正在运行 Linux Mint 17 和 Ubuntu 16.04.3。

答案1

以下是在关闭前执行任务的简单服务的示例。请注意,默认依赖项已通过选项DefaultDependencies=no禁用

[Unit]
Description=SleepBeforeShutdown Service
DefaultDependencies=no
Before=halt.target shutdown.target reboot.target

[Service]
Type=oneshot
ExecStart=/bin/sleep 30
RemainAfterExit=yes

[Install]
WantedBy=halt.target shutdown.target reboot.target

创建/编辑服务单元文件后,运行 systemctl enable yourservice.service并重启。(无需运行systemctl start yourservice.service)。此后,每次运行关机、停机或重启时,type-oneshot 服务都会先执行其操作,然后系统才会进行实际关机/重启。

编辑
我现在找到了以前的邮政那里提供了相同的解决方案。我没有资格发布带有上述问题链接的评论,所以我将保留我的答案(尽管严格来说,这是重复的)版主,如果违反了规则,请删除此帖子。

编辑2
还有另一个老邮政答案是一样的。其实并不难找到……

相关内容