Portál AbcLinuxu, 12. května 2025 11:18
Na jednom RPi které se nachází za NATem jsem si vytvořil službu (systemd unit), která má zajistit spuštění autossh po nastartování, aby byl k dispozici vzdálený přístup. Jenže to nefunguje, po nabootování služba neběží a z logu to vypadá, že se snaží spustit ještě před tím, než naběhne síť. Jenže to by se díky tomu network-online.target
snad dít nemělo. Ručně službu spustit (service autossh start
) můžu bez problému, a funguje to. Kde mám teda chybu?
[Unit] Description=Autossh Wants=network-online.target After=network.target network-online.target [Service] Type=simple Restart=always ExecStart=/usr/bin/autossh -N -M 6000 -R 0.0.0.0:50022:127.0.0.1:22 tunelar@***.***.***.*** -i /home/TunelKey [Install] WantedBy=multi-user.target
systemctl enable
, tak ano.
ExecStartPre=/bin/sleep 30Blbý u tohoto je, že to bude spát nejenom při startu ale taky při restartu. Lepší by bylo u toho autossh zapnout nějaké ukecanější verbose logování, třeba by potom v logu něco bylo, proč to selhalo. Nevím autossh neznám, ale máš tam že to má číst něco z /home/TunelKey. Je ten /home mountnutý dřív než naběhne síť?
S tím autossh jako takovým problém není. Služba selže pouze při nabootování. Pokud ji potom spustím znovu, tak už normálně běží. V logu je, že síť není dostupná.
lis 02 10:42:24 rpi autossh[572]: starting ssh (count 1) lis 02 10:42:24 rpi autossh[572]: ssh child pid is 586 lis 02 10:42:24 rpi autossh[586]: ssh: connect to host ***.***.***.*** port 22: Network is unreachable lis 02 10:42:24 rpi autossh[572]: ssh exited prematurely with status 255; autossh exiting
To zpoždění vyzkouším, ale teď to RPi nemám u sebe a nechci riskovat, že udělám něco po čem se k němu už nepřipojím.
*-wait-online.service
služba zařazená před network-online.target
?
network-online.target
přímo v sobě nemá žádnou magii pro detekci síťového připojení. Čekání na síť musí poskytnout jiná služba, na kterou network-online.target
počká.
man systemd.special
:
network-online.target
- ... This target unit is intended to pull in a service that delays further execution until the network is sufficiently set up. What precisely this requires is left to the implementation of the network managing service.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.