我正在尝试让 autossh 使用 systemd 自动设置到我家里的服务器的反向隧道。我在 /etc/systemd/system 中设置了一个名为 autossh.service 的单元
如果我连接到互联网后启动该服务,一切都会正常。然而,启动时情况并非如此。由于未连接到 Internet,因此无法显示“无法解析主机名”。
在 /etc/systemd/system/autossh.service 我有一行
After=network-online.target
理论上应该可以解决这个问题,但事实并非如此。该命令在启动时失败(它尚未在线,因此它表示无法解析主机名)并且不会重试。
我该如何解决这个问题?
答案1
答案2
a) 尝试StartLimitIntervalSec=12
在 的开头添加 [Unit] autossh.service
。
b)Type=simple
在[服务]部分。
c) 重新加载守护进程sudo systemctl daemon-reload
。
d) 重新启用它sudo systemctl enable autossh
。
e) 启动它sudo systemctl start autossh
。
f) 重新启动
成功了吗?
答案3
您还应该添加:
Wants=network-online.target
这将确保所有已配置的网络设备均已启动并在服务启动之前分配有 IP 地址。
答案4
这听起来不是一个让你的单元文件等待的更好目标吗?
nss-查找.target
应该用作所有主机/网络名称服务查找的同步点的目标。请注意,这与应使用 nss-user-lookup.target 的 UNIX 用户/组名称查找无关。所有需要完整主机/网络名称解析的服务都应在此目标之后排序,但不要将其拉入。systemd 会自动将此目标单元的 After= 类型的依赖项添加到具有 LSB 的所有 SysV init 脚本服务单元标头引用“$named”设施。