
我的虛擬機器在 Linux 上有時會失去網路連接,我需要不斷保持連線。所以我寫了以下腳本:
#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -ne 0 ]]; then
service network-manager restart
fi
當我在控制台中運行此腳本時,它可以工作,但使用cron
我來獲得:
network-manager: unrecognized service
我可以做些什麼來實現這項工作,或者還有什麼其他方法可以幫助我?
- - - - - - - - 解決方案 - - - - - - - -
要知道為什麼它在控制台中啟動但在cron
我在控制台中運行的任務期間不起作用:
echo $PATH
然後顯示:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
所以我將腳本編輯為:
#!/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
現在就可以了!
答案1
假設您正在使用某種類似 Linux Mint 的發行版...
聽起來「服務」程式找不到要執行的「網路管理員」腳本。它會在 /etc/init 或 /etc/init.d 中查找,以便您可以在那裡查看可用的內容。
或者看看自動完成是否會告訴你(在我看來更簡單)。打開終端機並輸入:
service net
然後輸入TAB幾次,應該會得到一個自動完成的名稱,例如“networkign”,甚至會看到一些可以使用的選項,例如:
$ service networking
force-reload reload restart start stop
sudo
所以你可以嘗試使用(如果腳本還不是 root可能需要):
service networking restart
另外,您可以ping
每隔一分鐘左右訪問一次像谷歌這樣的網站,看看網路是否仍然正常,而不是嘗試下載它。
嘗試檢查虛擬機錯誤或奇怪的設置,通常它不應該失去網路連接,除非主機失去它...