Moja maszyna wirtualna czasami traci połączenie z Internetem na Linuksie i muszę być stale połączona. Więc napisałem następujący skrypt:
#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
Po uruchomieniu tego skryptu w konsoli działa, ale używając cron
:
network-manager: unrecognized service
Co mogę zrobić, aby to zadziałało lub jakie inne podejście może mi pomóc?
---------------- ROZWIĄZANIE ----------------
Aby wiedzieć, dlaczego to działa uruchomione w konsoli, ale nie podczas zadania, które uruchomiłem cron
w konsoli:
echo $PATH
Następnie wyświetliło się:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Więc edytuję mój skrypt do:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
I to działa teraz!
źródło
service network-manager restart
działa przy użyciu konsoli, ale nie podczas zadania cron.