Bootstrap

Linux---对时/定时服务

文章目录


前言

        在当今信息化高速发展的时代,时间的准确性和任务的定时执行对于各种系统和服务来说至关重要。Linux操作系统,凭借其强大的功能和灵活的配置,成为了众多服务器和应用的首选平台。其中,对时服务和定时任务管理更是Linux系统中不可或缺的重要功能。


 一.对时服务

        Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器(NTP)同步,因此让你的计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务。

        NTP 是网络时间协议通过 udp 123 端口进行网络时钟同步。

安装Chrony软件 

yum install chrony -y

服务端配置

(1)使用vim 编辑器打开/etc/chrony.conf,修改如下信息:

pool 2.rhel.pool.ntp.org iburst 修改为 pool 127.127.1.0 iburst

        pool后面跟的是时间服务器,因为是服务端配置,自身就是时间服务器,所以时间服务器设置为本地IP:127.127.1.0

(2)指定允许访问的客户端

修改allow所在行,把注释符#去掉,并把后面的网段改为允许访问的网段

        服务端配置成时间服务器后,只允许192.168.23.0/24的客户端进行时间同步,如果要允许所有客户端都能向此服务器进行时间同步,可以写成allow all

(3) 配置此台服务器为ntp服务器

#local stratum 10  删除注释符号#---> local stratum 10

local stratum 10指示服务端在无法与外部时间源同步时,可以作为时间源为客户端提供服务。 

(4)重启chronyd服务并设置开机自启

[root@localhost ~]# systemctl restart chronyd.service
[root@localhost ~]# systemctl enable chronyd.service

(5)防火墙开放chrony服务的端口123和323

firewall-cmd --add-port=123/udp --permanent
firewall-cmd --add-port=323/udp --permanent
#刷新防火墙规则
firewalld-cmd --reload

#也可以直接关闭防火墙
systemctl stop firewalld.service

客户端配置 

(1)使用vim 编辑器打开/etc/chrony.conf,修改如下信息:

pool 2.rhel.pool.ntp.org iburst 修改为 pool 192.168.23.145 iburst

时间源也可以使用国内的服务器如aliyun.com

pool 2.rhel.pool.ntp.org iburst 修改为 pool ntp.aliyun.com iburst

(2)重复服务端配置的第4和第5步

(3)显示系统当前配置的NTP服务器的状态信息并进行对时

chronyc sources

  •  * 表示chronyd当前同步到的源
  • + 表示可接受的信号源,与选定的信号源组合在一起
  • ? 指示已失去连接性或其数据包未通过所有测试的源。
  • Stratum 值:Stratum 是一个表示 NTP 服务器层级或准确度的数字。

  • Reach 值:Reach 值表示在过去 6 个测试周期内,时间源成功响应了多少次 Chrony 请求。

  • LastRx 值:LastRx 表示最后一次接收到该时间源数据的时间(以分钟计)

  • Last sample:这部分显示了最后一次与该时间源同步时的偏移量和其他统计数据。

二.定时服务

单次定时任务

        at 计划任务是一次性的,到了指定时间点就开始执行指定的命令,执行完成后,不会重复执行这个命令

at 命令相关配置文件:

  • /etc/at.allow,写在该文件的人可以使用at命令
  • /etc/at.deny,黑名单
  • 两个文件如果都不存在,只有root能使用

基础语法:

`at [参数] [时间]  `

 (1)查看系统中的计划任务

[root@localhost httpd]# at -l
[root@localhost httpd]# atq

#计划任务保存在/var/spool/at目录下
[root@localhost ~]# ll /var/spool/at
总用量 0
drwx------. 2 root root 6 12月  1 22:32 spool

        若两个命令都没有任何输出,说明当前系统并不存在计划任务。

(2)下面开始创建计划任务 

at 日期 <按【Enter】键>
> 输入要执行的命令
Ctrl+D 提交

 案例:要在2024年12月1日执行hostname命令

[root@localhost httpd]# at 2024-12-1
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 1 at Sun Dec  1 22:17:00 2024

        这里只指定了日期,并没有指定具体时间,那么,创建这个计划任务是几点几分,就会在设置日期的几点几分执行该任务。

at 时间点 日期 <按【Enter】键>
> 输入要执行的命令
Ctrl+D 提交

 案例:在2024年12月1日22:25执行hostname命令

[root@localhost httpd]# at 22:32 2024-12-1
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 4 at Sun Dec  1 22:32:00 2024

 循环定时任务

        at计划任务是一次性的,执行完成就结束,如果想定期执行任务,就要用到crontab了。

crontab相关配置文件

(1)查看指定用户的contab计划任务

步骤一:使用root用户查看自己有没有crontab计划任务

[root@localhost at]# crontab -l
no crontab for root

步骤二:使用root用户查看tom用户是否有crontab计划任务 

[root@localhost at]# crontab -l -u zt
no crontab for zt

(2)创建计划任务 

步骤一:创建计划任务命令是crontab -e,会打开一个临时文件,可使用vim编辑。

[root@localhost at]# crontab -e

crontab定义计划任务的语法如下 :

分 时 日 月 周 命令

 案例1:每天上午7点执行hostname命令:

[root@localhost at]# crontab -e
crontab: installing new crontab
[root@localhost at]# crontab -l
0 7 * * * hostname

 案例2:每周一到周五上午7点执行hostname命令

[root@localhost at]# crontab -e
crontab: installing new crontab
[root@localhost at]# crontab -l
0 7 * * 1-5 hostname

 步骤二:为其它用户创建crontab任务

[root@localhost at]# crontab -e -u zt

总结

;