网络与 systemd 连接后通过 .sh 文件启动 rclone 服务

网络与 systemd 连接后通过 .sh 文件启动 rclone 服务

我试图让 rclone 服务在系统启动/重新启动时收到网络连接后立即安装驱动器。

到目前为止,我已经通过终端正确安装了所有内容。我编写了一个简单的 .sh 文件来执行它,基本上是:

#!/bin/sh
! mountpoint -q /home/{user}/{location}/{location} || umount /home/{user}/{location}/{location}    

rclone mount {nameofservice}: /home/{user}/{location}/{location} --config /home/{user}/.config/rclone/rclone.conf

在终端中运行它可以按预期工作。

我按照在线教程在使用 systemd 实现网络连接后使其正常工作,并创建了以下具有 755 +x 权限的文件/etc/systemd/system/{nameof.service}

[Unit]
Description=Starts {nameof.service} rclone service on startup
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User={user}
Group={group}
ExecStart=/home/{user}/{nameofsh}.sh
TimeoutStartSec=5
RemainAfterExit=yes
[Install]
WantedBy=network-online.target

我需要它以特定用户身份运行。创建此文件后,我还:

systemctl daemon-reload
systemctl enable {nameof.service}

在本教程中,我期望启用命令返回一条有关创建符号链接的消息,但我没有得到 - 它只是用新行重新调整,但我认为这不是主要的。

无论如何,当我运行时,systemctl restart {nameof.service}我得到了预期的结果,但在启动或重新启动时却没有。

此时我不确定我是如何出错的,并希望得到任何帮助。

答案1

通过设置WantedBy=default.target并保持其余部分不变,该服务将与默认目标,它代表默认的系统启动目标。这可确保脚本在网络可用时在引导过程中运行。

另外,如果只是缺少符号链接,您可以手动添加它,使用ln -s /etc/systemd/system/{nameof.service} /etc/systemd/system/multi-user.target.wants/{nameof.service}

相关内容