O problema é que quase certamente que sua tarefa @reboot cron tenha iniciado antes que suas interfaces de rede tenham chegado código%. Esta é, em geral, uma falha bem documentada de up . não significa que cron facility é inútil, apenas significa que você precisa entender como ele funciona e como resolvê-lo quando ele falha - como tem no seu caso ( provavelmente :).
Existem pelo menos 2 maneiras de fazer isso:
- use
@rebootem seu trabalho @reboot para dar à rede mais tempo para obtersleep. Sua entradaupserá parecida com esta::
@reboot sleep 10; /your/bash/script/as-it-is-now
Eu sugeri o valor de crontab aqui para dar à interface 10 segundos para vir 10 ; YMMV, então experimente com valores diferentes.
- seguindo a sugestão do @confetti (e com agradecimentos ao @Celada), coloque seu script em
up. A seguir, um protótipo que pode ser útil. Observe que ele é executado somente na primeira vez em que seu sistema é exibido (como/etc/network/if-up.de NOT toda vez que a interface de rede é trazida@reboot):
#!/bin/sh
NWKSTATUS=/var/run/the-network-is-up
# note that /var/run is a temp fs, and so a system shutdown
# will effectively erase our flag file, 'the-network-is-up'case "$IFACE" in
lo)
# Exclude the loopback interface; we won't consider it
# as it's not a true interface. We set the flag only
# when a true network interface comes up
exit 0
;;
*)
;; esac# if the flag file exists, we're done here
# otherwise, we'll create itif [ -e $NWKSTATUS ]; then exit 0
else
touch $NWKSTATUS
fi# add your script here...
Então - coloque todos os itens acima em um arquivo (por exemplo, up ), salve-o na pasta setnwkstatus.sh e torne-o executável (por exemplo, /etc/network/if-up.d/ )