Debian systemd服务在网络准备好之前就开始了

时间:2015-09-30 18:51:28

标签: linux debian systemd

操作系统:Debian Jessie

我想在每次系统启动时更新用户文件夹中的git存储库。

我用cron @reboot入门尝试了这个。 Cron开始得太早,结果用" SSH邮寄给我:无法解析主机名..."

然后我尝试了SysV init脚本。效果 - 相同。

目前,我正在尝试使用相同错误报告的systemd服务。

的/ usr /斌/ git_repo

#! /bin/sh
# Description:       Updates local git repository with latest content
#cd /home/tanglor/repo
su -c'cd repo;git pull' - tanglor

/etc/systemd/system/repo.service

[Unit]
Description = Updates local git repository with latest content
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/repo
[Install]
WantedBy=multi-user.target

仍然没有结果。我的意思是在syslog中我发现:

Sep 30 19:41:59 Khlavan repo[422]: ssh: Could not resolve hostname bitbucket.org: Name or service not known
Sep 30 19:41:59 Khlavan repo[422]: fatal: Could not read from remote repository.
Sep 30 19:41:59 Khlavan repo[422]: Please make sure you have the correct access rights
Sep 30 19:41:59 Khlavan repo[422]: and the repository exists.
Sep 30 19:41:59 Khlavan systemd[1]: repo.service: main process exited, code=exited, status=1/FAILURE
Sep 30 19:41:59 Khlavan systemd[1]: Failed to start Updates local git repository with latest content.
Sep 30 19:41:59 Khlavan systemd[1]: Unit repo.service entered failed state.

如何在每个系统启动时实现存储库更新?

一种解决方案是使用脚本和sleep命令,它将等待某个ssh测试成功然后完成。但这是最后的手段,我想通过这本书来解决这个问题。

1 个答案:

答案 0 :(得分:4)

您应该检查系统文档以找到最适合您的解决方案,但这里有一些可能对您有帮助的链接。

许多网络管理解决方案提供了一种无条件拉入network-online.target的方法,从而将network.target的效果升级到network-online.target的效果。

如果您使用NetworkManager,可以通过启用 NetworkManager-wait-online.service 来执行此操作:

systemctl enable NetworkManager-wait-online.service

如果您使用systemd-networkd,可以通过启用 systemd-networkd-wait-online.service 来执行此操作:

systemctl enable systemd-networkd-wait-online.service

这将确保所有已配置的网络设备都已启动,并且在引导继续之前已分配IP地址。这项服务将在90年代后超时。即使未达到超时,启用此服务也可能会大大延迟启动。默认情况下,这两种服务都被禁用。

或者,您可以更改需要网络启动的服务,包括

After=network-online.target
Wants=network-online.target

(freedesktop.org,2015)

检查手册页中的 Before =,After = 选项。这些是改变systemd启动单位的顺序的选项之一,然后选择你必须启动你的单位。

希望如果不解决您的问题,这将有助于您找到解决问题的方法。