技术刘

Ubuntu 下监控并自动重启网卡

很多时候网站服务器挂掉也可能是因为网卡挂掉了,如果你网站不能访问时 SSH 也无效了一般都是这个问题。这时可以通过一个定时脚本监控网络并进行自动重启。相关文章:Linux 下如何监控并自动重启 apache

1 创建脚本 auto_restart_network.sh

内容如下:

#!/bin/bash
ping www.baidu.com -c 1 >/dev/null
if [ $? -ne 0 ];then
# systemctl restart network
sudo /etc/init.d/networking restart
echo `date` network restart >> /alidata/tools/network_restart_logs.txt
else
echo `date` network works fine
fi

上传此文件到服务器。

注释:
1)该脚本会 ping www.baidu.com 网站,当然你也可以改成其他的网站,比如你自己的页面。
2)根据 ping 的结果,如果不成功的话,则使用命令重启网络连接服务。

2 创建定时任务

创建定时任务有两种方法一种是直接编辑 /etc/crontab,运行:

sudo vim /etc/crontab

在后面添加:

*/30 *  * * *   root    /alidata/tools/auto_restart_network.sh >> /alidata/tools/logs.txt 2>&1

其中 */30 表示每 30 分钟执行一次脚本。
关于 crontab 时间说明如下:

# .---------------- minute (0 - 59) 
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR
#sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# *  *  *  *  *  command to be executed

另一种是使用命令:

crontab -e

在后面添加:

*/30 *  * * *   /alidata/tools/auto_restart_network.sh >> /alidata/tools/logs.txt 2>&1

我的理解,这两种方式前者添加的是一个整个系统所有用户的定时任务,所以在时间后面需要指定用户 root。后者是当前用户的定任务。采用哪一种都可以。

重启定时任务:

sudo service crond restart

如果顺利的话这一脚本就会每隔 30 分钟执行一次,并且可以在 /alidata/tools/network_restart_logs.txt 看到脚本执行的日志以及 /alidata/tools/logs.txt 看到每次执行的输出。因为频率低以及只输出不多的几个字符,这两个 log 文件通常不会增加很多,不过也应注意下及时清除。

附录:网络服务操作命令

Ubuntu 下网络服务操作命令如下:
开启网络服务

sudo /etc/init.d/networking start

关闭网络服务

sudo /etc/init.d/networking stop

重新启动网络服务

sudo /etc/init.d/networking restart

参考材料

https://www.cyberciti.biz/faq/linux-restart-network-interface/

Copyright secured by Digiprove © 2019 Liu XiaoAll Rights Reserved