sam*_*4ze 12 startup scripts automount systemd
我在旧的 HP 笔记本电脑上运行 Ubuntu 16.04
我已经在上面安装了一些软件来创建一个小型的自制 plex 服务器。我已经安装了声纳、雷达、洪水、夹克等,它们都在启动时自动启动!
几天前,我决定也安装 rclone 并且我已经创建(感谢 GitHub 项目)几个文件夹,必须在每次启动时通过启动脚本(我通过终端编写启动它sudo ~/bin/check.mount)来安装这些文件夹。Sonarr 和 Radarr 设置为通过 deluge 将内容下载到临时文件夹,然后将其导出到这两个安装的文件夹之一。
问题是,当我手动启动脚本时,Sonarr/Radarr 已经启动并运行,并且找不到它们的根文件夹,所以他们给了我一个错误。
我想做的是创建一个 mountgdrive.service(服务,或任何必要的服务)来自动启动 check.mount 脚本,如果这还不够,请在 sonar.service 和radarr.service 中插入延迟!那可能吗?
我写了这个 sudo nano /etc/systemd/system/mountgdrive.service
[Unit]
Description=MountSmokeScreen
After=network.target
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
并在位mountgdrive.service中添加到sonarr.service 和radarr.service After=,像这样
[Unit]
Description=Sonarr
After=syslog.target network.target mountgdrive.service
[Service]
User=samsepioldoresh4ze
etcetc
....
Run Code Online (Sandbox Code Playgroud)
但它不起作用!Sonarr 和 Radarr 正常启动,但未安装驱动器!我究竟做错了什么?
另外,rtcwake 在我的笔记本电脑上不起作用 - 我认为这是内核问题?!有没有办法解决这个问题?
Dan*_*Dan 35
您遇到此问题的原因是因为您在使用After=时还需要Requires=or Wants=。
有 3 个主要属性用于管理依赖项。我将尝试简要解释差异,但您可以在[Unit] Section Options | 中找到更多详细信息。自由桌面网站
After=
此选项仅设置单元的顺序,不保证服务已完成启动。
Wants=
此选项允许您的设备仅在另一台设备完成启动后启动。(启动成功与否无关紧要)
Requires=
Wants=然而,就像,这将使您的单元仅在依赖项成功启动后启动。
您还可以使用每个选项的相反选项。
After= 被反转 Before=Wants= 被反转 WantedBy=Requires= 被反转 RequiredBy=要解决您的问题,您需要将挂载服务更改为:
[Unit]
Description=MountSmokeScreen
After=network.target
Before=sonarr.service radarr.service
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target sonarr.service radarr.service
Run Code Online (Sandbox Code Playgroud)
或者您可以添加Wants=mountgdrive.service到sonarr.service和radarr.service单位。
您可以通过运行以下命令(您需要对 执行相同操作radarr.service)而无需修改默认文件即可做到这一点:
systemctl edit sonarr.service
Run Code Online (Sandbox Code Playgroud)
并插入以下内容:
[Unit]
Wants=mountgdrive.service
Run Code Online (Sandbox Code Playgroud)
注意:如果您不希望这两个服务在失败时根本不启动,您可以替换Wants=为Requires或WantedBy=with (尽管通常就足够了,甚至在文档中也推荐)。RequiredBy=mountgdrive.serviceWants=
编辑:WantedBy和RequiredBy选项只能在该[Install]部分下使用。(感谢@Yankee)
| 归档时间: |
|
| 查看次数: |
20224 次 |
| 最近记录: |