![网络与 systemd 连接后通过 .sh 文件启动 rclone 服务](https://linux22.com/image/222275/%E7%BD%91%E7%BB%9C%E4%B8%8E%20systemd%20%E8%BF%9E%E6%8E%A5%E5%90%8E%E9%80%9A%E8%BF%87%20.sh%20%E6%96%87%E4%BB%B6%E5%90%AF%E5%8A%A8%20rclone%20%E6%9C%8D%E5%8A%A1.png)
我试图让 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}