计划任务分为2种:
一次性调度任务
循环调度执行
(不做重定向的情况下,计划任务执行中的所有输出都会以邮件的形式发送给指定用户)
一次性调度:
at命令,适用于突发性和临时性任务
安装at,启动atd进程,设置为开机启动
# yum -y install at
# systemctl start atd
# systemctl enable atd
at命令的语法格式:
at <TIMESPEC>
注释:timespec 时间规格
TIMESPEC形式如下:
now +5min:从当前时间开始
teatime tomorrow (teatime is 16:00)
noon +4 days
5pm august 3 2019
实例1:在1分钟后,创建用户名为linux的普通用户
# at now +1min
at> useradd linux
at> <EOT>
使用at命令时,按ctrl+d 键可以结束输入
atq命令查看系统中待执行的任务列表
# atq
注:如果任务较多,上诉方法较为繁琐,可以将命令系写入一个文件,并通过重定向输入到at命令中
实例2:
创建一个文件at.jobs 写入2条创建普通用户的命令,同时在/home目录下创建一个以当天时间命名的文件
[root@Linux ~]# cat at.jobs
useradd linux01
useradd linux02
touch /home/`date +%F`_file.txt
[root@Linux ~]# at now +1min < at.jobs
job 1 at Thu Oct 20 17:20:00 2022
[root@Linux ~]# id linux01
uid=1004(linux01) gid=1004(linux01) groups=1004(linux01)
[root@Linux ~]# id linux02
uid=1005(linux02) gid=1005(linux02) groups=1005(linux02)
[root@Linux ~]# ls /home/
2022-10-20_file.txt alice hello.ltxt linux01 linux02 mysql test testfile.txt test.txt zhangsan
循环调度执行:
cron控制
查看进程状态
# systemctl status crond
crond进程每分钟处理一次计划任务,查看是否有任务需要执行
例如:
某任务需要10分钟执行一次,其他任务可能需要20分钟或者数小时执行一次,
crond进程会每分钟对这些任务扫描一次,如果某一个任务到了执行时间,将执行该任务
用户级: