1.问题现象
最近使用vps的时候有内存泄漏问题,严重的时候vps会当机,这可能是我使用的一款开源软件(kcptun)有BUG所导致的,暂时找不到更好的软件,我就想通过定时重启vps的方法去释放内存。定时重启vps的命令用的是crontab,可以设定一个重启服务器的任务:
(1)安装crontab
yum install vixie-cron crontabs
chkconfig crond on
service crond start
(2)编辑定时任务设定
[root@localhost ~]# crontab -e
0 12 * * * /sbin/reboot
(3)重启crontab
/etc/rc.d/init.d/crond stop
/etc/rc.d/init.d/crond start
(中午12点钟重启vps),可是到了12点钟服务器并没有重启。开始怀疑是crontab没有正常启动,反复检查并没有发现问题。
2.问题分析
crontab任务执行依赖于时间,时间设定不对也可能导致任务无法正常执行。用“date”命令查看当前系统时间
[root@localhost ~]# date
Tue Jul 18 00:00:30 CLT 2017
发现vps上的时间和当前时间不对应。猜测时区可能不对,查看当前时区:
[root@localhost ~]# date -R; date +%z
Tue, 18 Jul 2017 01:30:59 -0400
-0400
果然是用了别的时区,正常情况我们使用的是+
0800(东八区),而vps用别的时区估计是因为服务器所在的位置是别的位置。
3.修改vps的时区
[root@localhost ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite `/etc/localtime'? y
再次查看当前的时区是否正确:
[root@localhost ~]# date -R; date +%z
Tue, 18 Jul 2017 13:34:58 +0800
+0800
查看当前时间也和电脑的时间一致
[root@localhost ~]# date
Tue Jul 18 13:35:41 CST 2017
再次设定crontab的定时任务,vps可以按照设定的时间重启了,至此问题完全解决。
参考资料:
【1】Linux服务器CentOS/Debian环境自动定时重启设定方法
【4】 linux下定时执行任务的方法 crontab 用法说明