我的虚拟机在 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
每隔一分钟左右访问一次像 Google 这样的网站来查看网络是否仍然畅通,而不必尝试下载它。
尝试检查 VM 错误或奇怪的设置,通常它不应该丢失网络连接,除非主机丢失它......