Centos7校正时间及设置定时校时任务

at 2年前  ca Linux  pv 1444  by touch  

ntp安装及调整时区

1、安装ntp服务软件包:yum install ntp

2、将ntp设置为缺省启动:systemctl enable ntpd

3、修改启动参数,增加-g -x参数,允许ntp服务在系统时间误差较大时也能正常工作:vim /etc/sysconfig/ntpd

Centos7校正时间及设置定时校时任务 Linux 第1张

4、启动ntp服务:service ntpd restart 服务器用:systemctl restart ntpd.service

5、将系统时区改为上海时间(即CST时区):ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

6、输入date命令查看时间是否正确

查看系统时间date
查看硬件时间hwclock --show
修改系统时间date --set="07/07/06 10:19" (月/日/年 时:分:秒)
修改硬件时间hwclock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)
重新启动系统,硬件时间会读取系统时间,实现同步,不重启时需要用hwclock或clock命令实现同步。(hc代表硬件时间,sys代表系统时间)
系统时钟与硬件时钟同步:hwclock --hctosys或者clock --hctosys
硬件时钟和系统时钟同步:hwclock --systohc或者clock --systohc


1.NTP简介

NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。(1s=1000ms) NTP服务器就是利用NTP协议提供时间同步服务的。

2.NTP原理

NTP客户端可以定时自动向NTP服务器发送请求来获取时间,NTP服务器将时间发送给客户端。

3.NTP同步

为了避免主机时间因为长期运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务端和ntp客户端。在生产系统中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。

不同机器间同步时间,可以使用ntpdate命令(立即同步),也可以使用ntpd服务(缓慢同步)。

1、ntpdate命令
如果系统里没有这个命令,表示没有安装相应的程序:通过下面命令安装:
[root@CentOS7 ~]# yum install ntpdate     
CentOS6 或7 系统使用ntpdate比较简单。格式如下:
1 root@debian:~# ntpdate [NTP IP/hostname]
2 root@debian:~# ntpdate 192.168.0.1
3 root@debian:~# ntpdate pool.ntp.org
正确的时间更新显示

ntpdate ntp1.aliyun.com 时间服务器 校对时间
6 Aug 09:01:26 ntpdate[32907]: step time server 120.25.115.20 offset 8.966838 sec

注意:如果此时ntpd服务已经启动,端口会被ntpd服务端占用,此时ntpdate命令就不能手动同步时间了, 这样的同步,只是强制性的将系统时间与ntp服务器时间同步,机器的硬件时间不会同步,如果希望硬件时间和同步完的系统时间一直,可以通过hwclock -w将硬件时间与系统时间同步。

使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。
要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值, 然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.


pool.ntp.org是什么,如何用?https://www.ntppool.org/zh/use.html


linux定时任务cron配置

定时任务摘自博客园-- 舒艾青 点击上方可以查看原文

实现linux定时任务有:cron、anacron、at,使用最多的是cron任务

名词解释

cron--服务名;crond--linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似;crontab--是定制好的计划任务表

软件包安装

要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:

vixie-cron软件包是cron的主程序。crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
注:我在使用centos7的时候发现没有cron的软件包,只有crontabs的软件包

查看是否安装了cron软件包: rpm -qa|grep vixie-cron

查看是否安装了crontabs软件包:rpm -qa|grep crontabs

如果没有安装,则执行如下命令安装软件包(软件包必须存在)
  rpm -ivh vixie-cron-4.1-54.FC5*
  rpm -ivh crontabs*

如果本地没有安装包,在能够连网的情况下可以在线安装

yum install vixie-cron
yum install crontabs

查看crond服务是否运行

pgrep crond
/sbin/service crond status
ps -elf|grep crond|grep -v "grep"

crond服务操作命令

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

配置定时任务

cron有两个配置文件,一个是一个全局配置文件(/etc/crontab),是针对系统任务的;一组是crontab命令生成的配置文件(/var/spool/cron下的文件),是针对某个用户的.定时任务配置到任意一个中都可以。

查看全局配置文件配置情况: cat /etc/crontab
查看用户下的定时任务:crontab -lcat /var/spool/cron/用户名

crontab任务配置基本格式

Centos7校正时间及设置定时校时任务 Linux 第2张
配置格式

*   *  *  *    command
分钟(0-59)  小时(0-23)  日期(1-31)  月份(1-12)  星期(0-6,0代表星期天)  命令
  第1列表示分钟1~59 每分钟用或者 */1表示
  第2列表示小时1~23(0表示0点)
  第3列表示日期1~31
  第4列表示月份1~12
  第5列标识号星期0~6(0表示星期天)
  第6列要运行的命令

  • 在以上任何值中,星号*可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

  • 整数间的短线-指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

  • 用逗号,隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

  • 正斜线/可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
    注:开头为井号(#)的行是注释,不会被处理。

使用实例

实例1:每1分钟执行一次command

命令:* * * * * command

实例2:每小时的第3和第15分钟执行

命令:3,15 * * * * command

实例3:在上午8点到11点的第3和第15分钟执行

命令:3,15 8-11 * * * command

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

命令:3,15 8-11 */2 * * command

实例5:每个星期一的上午8点到11点的第3和第15分钟执行

命令:3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb

命令:30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb

命令:45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

命令:10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

命令:0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb

命令:0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb

命令:* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb

命令:* 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb

命令:0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb

命令:0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本

命令:*01 * * * * root run-parts /etc/cron.hourly*

说明:run-parts去掉后面这个参数,可以在后面加上要运行的某个脚本名。

Linux定个时任务:ERROR (getpwnam() failed) 解决方法

首先: 到自己的 /etc/crontab看看你写的任务正确与否,这里要写上用户名, 其次: 重启crontab 最终解决。
例如: cat /etc/crontab 里面的任务:1 1 * * * root echo “哈哈” >> haha.txt保存退出 service crond restart或者/sbin/service crond restart
错误的重点是,你的命令有没有用户名,没有加上就解决了。

[root@localhost ~]# ntpq -p
说明:
*表示目前使用的ntp server,这里选择的本机;
st:即stratum阶层,值越小表示ntp serve的精准度越高;
when:几秒前曾做过时间同步更新的操作;
Poll表示,每隔多少毫秒与ntp server同步一次;
reach:已经向上层NTP服务器要求更新的次数;
delay:网络传输过程钟延迟的时间;
offset:时间补偿的结果;
jitter:Linux系统时间与BIOS硬件时间的差异时间



作者:小怪兽的程序员哥哥
链接:https://www.jianshu.com/p/cfd4c96b959d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


版权声明

本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。

 

扫一扫在手机阅读、分享本文

已有0条评论