文章目录
-
目录
文章目录
前言
一.对时服务
服务端配置
客户端配置
二.定时服务
单次定时任务
循环定时任务
前言
在当今信息化高速发展的时代,时间的准确性和任务的定时执行对于各种系统和服务来说至关重要。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.0.0.1 iburst
pool后面跟的是时间服务器,因为是服务端配置,自身就是时间服务器,所以时间服务器设置为本地IP:127.0.0.1
(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