
Meine virtuelle Maschine verliert unter Linux manchmal die Internetverbindung und ich muss ständig verbunden bleiben. Daher habe ich das folgende Skript geschrieben:
#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
Wenn ich dieses Skript in der Konsole ausführe, funktioniert es, aber wenn ich eins verwende, cron
erhalte ich:
network-manager: unrecognized service
Was kann ich tun, damit dies funktioniert, oder welcher andere Ansatz könnte mir helfen?
---------------- LÖSUNG ----------------
Um zu erfahren, warum das funktioniert, habe ich es in der Konsole gestartet, aber nicht während einer Aufgabe, die cron
ich in der Konsole ausgeführt habe:
echo $PATH
Dann wurde angezeigt:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Also bearbeite ich mein Skript wie folgt:
#!/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
Und das funktioniert jetzt!
Antwort1
Angenommen, Sie verwenden eine Linux Mint-ähnliche Distribution ...
Es klingt so, als ob das „Service“-Programm kein auszuführendes „Network-Manager“-Skript finden kann. Es sucht in /etc/init oder /etc/init.d, also können Sie dort nachsehen, was verfügbar ist.
Oder sehen Sie nach, ob die automatische Vervollständigung Ihnen weiterhilft (meiner Meinung nach einfacher). Öffnen Sie ein Terminal und geben Sie Folgendes ein:
service net
Geben Sie es dann TABmehrmals ein. Sie sollten einen automatisch vervollständigten Namen wie „networkign“ erhalten und sogar einige Optionen sehen, die Sie verwenden können, wie:
$ service networking
force-reload reload restart start stop
Sie können es also mit Folgendem versuchen (ist möglicherweise erforderlich, sudo
wenn das Skript nicht bereits als Root ausgeführt wird):
service networking restart
Sie können auch etwa ping
jede Minute eine Site wie Google aufrufen, um zu prüfen, ob das Netzwerk noch aktiv ist, anstatt zu versuchen, es herunterzuladen.
Versuchen Sie, nach einem VM-Fehler oder seltsamen Einstellungen zu suchen. Normalerweise sollte die Netzwerkverbindung nicht verloren gehen, es sei denn, der Hostcomputer verliert sie ...