欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Linux中的系统延时任务和定时任务与时间同步服务和构建时间同步服务器

Linux中的系统延时任务和定时任务与时间同步服务和构建时间同步服务器

2025/5/3 4:04:54 来源:https://blog.csdn.net/qq_59278745/article/details/147428625  浏览:    关键词:Linux中的系统延时任务和定时任务与时间同步服务和构建时间同步服务器

延时任务

在系统中我们的维护工作大多数时在服务器行对闲置时进行

我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的,不会重复执行

当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者

在RHEL9中默认系统中的所有普通用户都可以发起延时任务

at命令

格式

at <参数> <时间>

参数

不加参数直接跟<时间>在指定的时间执行延时任务
now + <num> <min/hours/days/weeks>从现在开始num<minutes/hours/days/weeks>后执行延时任务
-m当任务完成之后,即使没有标准输出,将给用户发送邮件
-l (atq)可列出目前系统上面的所有该用户的at调度
-d  (atrm)可以取消一个在at调度中的工作
-v使用较明显的时间格式,列出at调度中的任务列表
-c可以列出后面接的该项工作的实际命令内容
-f从文件中读取作作业

其中不加参数直接跟时间的格式可以为

HH:MM

HH:MM YYYY-MM-DD

at + <hh:mm>(想要延时任务执行的时间)

at <时间>

如图我在19:12:40的时候想在19:14执行延时任务 

[root@localhost ~]# at 19:14
warning: commands will be executed using /bin/sh
at> touch /mnt/vb{1..5}
at><EOT>
job 1 at Tue Apr 22 19:14:00 2025

在编写完延时任务后,我们需要回车进入下一行然后按下ctrl + D结束编写延时任务,并生成延时任务进入延时任务队列。 

当时间来到19:14:01时,延时任务已经自动执行完毕,生成了对应的文件。

now+<num>min        在输入at命令回车的那一刻延时n分钟后的任务

非交互执行at延时任务

在任意位置用vim编写一个脚本文件

使用多行重定向输入

使用sh命令执行脚本文件,就可以实现非交互式生成延时任务并执行 

-r        删除延时任务

at -r <对应的延时任务序号>

-d        删除对应代号的延时任务

-v        显示延时任务将会在何时执行

-V        查看at的版本

-c        可以列出后面接的该项工作的实际命令内容

-f        从文件中读取作作业

-m        任务完成后给用户发送

安装postfix
dnf install postfix.x86_64

 安装s-nail
 dnf install s-nail.x86_64

 touch命令的执行后是不会返回输出信息到终端的

但是-m参数会强制执行at任务后无论是否返回输出信息都发送邮件给用户

 可以用mail来查看邮件

按数字顺序编号进行查看第几封邮件
用q键退出mail模式

延迟任务的安全优化

/etc/at.deny        使用at的黑名单

/etc/at.allow        使用at的白名单

注意:初始的主机是没有at.allow这个文件的!如有需要则要用户自己创建

一旦创建了at.allow这个文件,所有用户都会被禁止使用at命令除了root用户。

注意:当存在at.allow文件时,
at.allow文件里的用户名与at.deny文件里的用户名重复时
系统会允许那个用户执行at命令

crontab

检查crond服务是否开启

编写系统定时任务

其中* * * * *的含义是每月每周每天每小时每分钟执行一次命令

-r        删除

-i        显示删除提示

-l        列出用户的crontab

分钟小时定时效果
*****每小时的每分钟的01秒触发
*/n****每隔n分钟的01秒触发
n****每小时的过n分钟
na~b***从a点到b点中间每个小时的过n分钟
n*abc

b月a日每小时过n分

b月的每个周c的每小时过n分

注:天和周是分开约定的

0和7都表示周日

系统级别的定时任务

在/etc/cron.d/下编写定时任务

每到设定的周期时间时系统则会自动执行 

 如图来到18:53时,系统自动创建了vba和vbb这两个文件

系统级别的定时任务执行完后,要记得及时删除否则会占用系统资源! 

手动更改主机时间

查看当前主机的时间

timedatectl

先关闭时间同步

systemctl stop chronyd.service

更改主机时间

timedatectl set-time "yyyy-mm-dd hh:mm:ss"

这里成功更改主机时间为2077-7-7 7:07:07

手动更改主机时区

查看时区地区表

timedatectl list-timezones

从时区地区表选择地区进行更改

同理更改为其他地区也是可以的,下图更改为了阿曼 

 手动更改主机时间模式

timedatectl set-local-rtc <true/false>

 启用本地时间模式

将 RTC 设置为UTC模式

更改授时源

编写系统中配置 Chrony 服务的配置文件

vim /etc/chrony.conf

将框住的部分更改为网络上能找到的授时源

重启chronyd.service服务让主机与授时服务器重新同步时间

systemctl restart chronyd.service

重启后还需要稍等服务器同步时间

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词