MLu*_*MLu 5 systemd raspberry-pi raspbian
我有一个程序,我想在启动systemd时启动它,但只能在 DNS 可用后启动。
服务文件取决于network-online.target:
$ cat /etc/systemd/system/te-m-pi.service
[Unit]
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/te-m-pi
ExecStart=/opt/te-m-pi/te-m-pi.py
[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)
但是,当它启动时,它立即退出,因为它无法解析它需要的一些主机名:
te-m-pi.py[399]: socket.gaierror: [Errno -2] Name or service not known
systemd[1]: te-m-pi.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit te-m-pi.service entered failed state.
Run Code Online (Sandbox Code Playgroud)
如果我编辑 python 文件并time.sleep(10)在最开始插入一个简单的,它会等待 10 秒,然后愉快地运行。
显然,当它启动时,网络尚不可用,尽管依赖于network-online.target. 我如何确保它仅在网络真正启动并配置好时才启动?
我正在使用 systemd 215-17+deb8u7 在 Raspbian 8 Jessie 上运行它。
小智 0
刚刚在 Ubuntu 20 上遇到了同样的问题,导致非常混乱的问题(例如,NFS 自动挂载器随机无法工作):网络实际上已在线,但 DNS 支持尚不可用。要确保 DNS 支持,请添加systemd-resolved.service到After和Wants条目。
| 归档时间: |
|
| 查看次数: |
2004 次 |
| 最近记录: |