背景
前段时间查看了项目的运行状态,查看了实时日志。 我发现日志中打印的时间明显比北京时间慢了30分钟。 这时候我大概知道了原因,也有了相应的解决办法。 为了证实我的想法,我关闭了日志文件并使用系统中的date命令,发现时间确实晚了30分钟。
Linux时间在一段时间后变得不准确是一个常见的现象。 这主要是因为服务器上的物理时钟频率略有变化,导致时间不准确。 这种情况会导致插入数据库数据的操作时间错误、定时任务没有按计划执行等相关问题。
下面简单说一下如何修改Linux时间。
方法一:同步时间 1、首先检查命令是否安装
rpm -qa | grep ntpdate
使用以下命令安装(请查看是否未安装)
yum -y install ntp ntpdate
将时间设置为
ntpdate asia.pool.ntp.org
您还可以将时间同步到阿里巴巴服务器时间
ntpdate ntp1.aliyun.com(阿里服务器时间)
同步硬件时间
hwclock --systohc
命令介绍
命令用于设置本地日期和时间。
语法
ntpdate [ -b] [ -d] [ -s] [ -u] [ -aKeyid] [ -eAuthenticationDelay] [ -kKeyFile] [ -oVersion] [ -pSamples] [ -tTimeOut] Server...
选项
-
使用Keyid来验证所有数据包。
-b
通过调用子例程增加时钟上的时间。
-d
指定调试方法。 确定命令将产生什么(不产生实际结果)。 结果再现在屏幕上。 该标志使用非特权端口。
-
指定延迟身份验证处理的秒数。
-
当不使用默认的 /etc/ntp.keys 文件时,请为包含密钥的文件指定不同的名称。 查看文件的描述。
-
指定轮询其传出数据包时要使用的 NTP 版本实现。 该值可以是 1、2、3。默认值为 3。
-
指定从每个服务器获取的样本数量。 的值在 1 到 8 之间(含 1 和 8)。 它的默认值为 4。
-s
指定使用日志记录工具而不是使用标准输出。 它在运行命令和 cron 命令时很有用。
-
指定等待响应的时间。 给定值四舍五入为 0.2 秒的倍数。 默认值为 1 秒。
-u
指定用于发送数据包的非特权端口。 当防火墙后面阻止特权端口上的传入流量并且想要与防火墙外部的主机同步时,这非常有用。 防火墙是控制从外部访问专用网络的系统或计算机。
方法1确实修改了时间,但只是改变了时间。 过了一段时间,你会发现时间变得不准确,需要通过执行上面的命令来修改时间。 那么有没有一种方法可以一劳永逸呢? ?是,预定的同步时间
方法二:安排同步时间
crond是Linux下的一个守护进程,用于定期执行某些任务或等待处理某些事件,类似于Linux中的计划任务。
检查是否安装了cron定时任务服务
键入以下命令。 如果没有返回,则说明没有安装。
rpm -qa | grep cron
1.1 安装cron(请查看是否未安装)
yum install -y vixie-cron
yum install -y crontabs
启动 cron 并将其设置为开机自动启动
service crond start //启动cron
chkconfig crond on //设置开机自启
1.相关命令
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
2、设置定时任务有两种方式: 2.1 -e (操作方法与Vim相同)
输入以下命令
编写相应的任务
2.1 直接编辑/etc/文件,添加相应任务
两种方式保存退出后,都可以在指定的时间执行相应的任务。 至此,定时任务设置完毕。
3 文件内容介绍
您一定对 */30 * * * * 格式感到好奇。 事实上,这是您指定的任务执行时间。
下面我们来详细介绍一下:
3.1 各字段可以使用特殊字符
“*”代表取值范围内的所有数字。 如果月份字段为*,则表示1至12个月;
“/”表示每隔一定时间间隔。 例如,分钟字段为*/10,表示每10分钟执行一次。
“-”表示从某个区间开始的范围,是闭区间。 例如“3-7”表示“3,4,5,6,7”,小时字段中的0-23/1表示0~23点范围内每小时执行一次。
”,“分散的数字,如:1,2,7,9。
3.2 示例
30 22 * * * /etc/init.d/nginx restart //每晚的22:30重启 nginx。
0 1 1,20 * * /etc/init.d/nginx restart //每月1、 20日凌晨1点重启nginx。
0,30 1-5 * * * /etc/init.d/nginx restart //每天凌晨1点至5点之间每隔30分钟重启nginx。
*/30 * * * * /usr/sbin/ntpdate 210.72.145.20 //每半小时同步一下时间
* 23-5/1 * * * /etc/init.d/nginx restart //晚上11点到早上5点之间,每 隔一小时重启nginx
3.3 注意事项
尽量使用绝对路径,否则任务经常会因为路径错误而无法执行。
您的喜欢和关注就是对我最大的肯定。 希望大家支持我。 谢谢你们。