ntpdate + crond 实现周期性对时
ntpdate是NTP协议的客户端,通过 ntpdate ip 命令可以将本机的系统时间与 服务器的时间同步。而crond服务可以定时执行相应的任务,因此ntpdate+crond的组合可以实现周期性的对时动作。ntpdate首先确认本机系统中有没有安装ntpdate,没有安装的话,去[http://www.ntp.org/downloads.html]下载ntp源代码,进行编译,最后可得到
ntpdate是NTP协议的客户端,通过 ntpdate ip 命令可以将本机的系统时间与 服务器的时间同步。而crond服务可以定时执行相应的任务,因此ntpdate+crond的组合可以实现周期性的对时动作。
- ntpdate
首先确认本机系统中有没有安装ntpdate,没有安装的话,去[http://www.ntp.org/downloads.html]下载ntp源代码,进行编译,最后可得到 ntpdate、ntpd等,我们这里只需将ntpdate拷贝到系统中相应的位置即可。
我采用的是飞凌okmx6ul-c开发板,内部Linux系统已有ntpdate,在/sbin。服务器IP 172.16.30.27。
ntpdate 172.16.30.27 可以实现ntp对时,注意此处修改的是系统时间,硬件时间需要进一步执行 hwclock - w命令。还需注意的是通过 ntp 得到的时间是 UTC 时间,北京时间需要在使用时 + 8小时。
2.crond服务
crond是服务,与之对应的是crontab命令。crontab命令格式:
Usage: crontab [-c DIR] [-u USER] [-ler]|[FILE]
-c Crontab directory
-u User
-l List crontab
-e Edit crontab
-r Delete crontab
FILE Replace crontab by FILE ('-': stdin)
crontab可以设置周期性执行的命令,具体的配置存储在“crontab”文件中。在/var/spool/cron/crontabs 里对不同的用户建立不同的”crontab”文件,(注:没有/var/spool/cron/crontabs 的,手动建立问价夹 mkdir -p /var/spool/cron/crontabs ).
crontab -e 命令可以编辑 “crontab”文件,一般Linux系统中默认使用 vi 编辑器。
crontab -l 命令可以查看“crontab”文件内容。“crontab”文件中的命令格式如下图:
(1)建立“crontab”文件, crontab -e ,文件不存在会新建一个文件。我采用的飞凌开发板系统使用root用户,编辑如下内容:
SHELL=/bin/sh
PATH=/bin;/sbin;/usr/bin;/usr/sbin
HOME=/
#run-parts
*/30 * * * * /etc/settm #settm是ntp设置时间的脚本
保存退出,查看/var/spool/cron/crontabs 文件夹下,有如下文件,root文件即为“crontab”文件。
(2)建立设置时间脚本,在/etc文件夹下,vi settm,
#!/bin/sh
ntpdate 172.16.30.27
hwclock - w
echo "settime oK ">/dev/console #此处>/dev/console是必要的,因为此脚本的终端不同,没有此项console看不到信息
注意文件属性,chmod 777 settm
(3)设置crond的开机启动,不同的定制版本位置不同,我采用飞凌okmx6ul-c开发板,
首先,cp crond /etc/rc.d/init.d
其次,修改rc.conf文件,cfg_services=”mount-proc-sys udev hostname depmod modules filesystems inetd syslog crond”
最后,断电重启,通过 ps -ef 查看crond 是否启动。
(4) 通过以上步骤实现了每30分钟进行一次对时。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)