【RHCE服务搭建实验】之计划任务

目录

  • 一、 at命令
    • 用户权限
  • 二、crontab命令
    • 用户权限
  • 三、at命令和crontab命令的区别

所谓的计划任务就是在特定的时间运行某个命令,这些计划好的命令通常被称为任务或作业。

一、 at命令

用户(包括 root )可以使⽤ at 命令为 atd 守护进程的作业排队。atd 守护进程提供了 a 到 z共 26 个队列,作业按字⺟顺序排列,队列越后,系统优先级越低。

[root@manged ~]# rpm -ql at 查看at命令相关文件

使⽤ at TIMESPEC 命令可以计划新的作业,at 命令从 stdin 通道中读取要执⾏的命令,以按 Ctrl + D 来完成输⼊,比较复杂的命令通过脚本文件的重定向解决。
可用的组合:

  • now +5min
  • teatime tomorrow (下午茶时间为 16:00 )
  • noon +4 days
  • 5pm auguest 3 2023

要获得当前⽤户的待处理作业的概述,使⽤命令 atq 或 at -l 命令。

[root@manged ~]# at now +5min
warning: commands will be executed using /bin/sh
at> date > xixi.txt
at> <EOT>
job 11 at Sat Jan 13 19:21:00 2024
[root@manged ~]# at -l
11	Sat Jan 13 19:21:00 2024 a root

解释:

11 Sat Jan 13 19:21:00 2024 a root

第⼀个字段:该作业的唯⼀作业编号。
第⼆个字段: 计划作业的执⾏⽇期和时间。
第三个字段: 作业已排⼊默认的 a 队列。不同的作业可以排⼊不同的队伍。
第四个字段: 作业的所有者。

注意: 普通用户只能查看⾃⼰和控制⾃⼰的作业,root 用户可以查看和管理所有⼈的作业。

at -c JOBNUMBER 命令检查在执行作业时将运⾏的实际命令。

atrm 作业编号 删除一个作业或任务

[root@manged ~]# at -l
12	Sat Jan 13 19:52:00 2024 a root
[root@manged ~]# atrm 12
[root@manged ~]# at -l

用户权限

/etc/at.allow,写在该⽂件的用户允许使⽤ at 任务
/etc/at.deny,写在该⽂件的用户不允许使⽤ at 任务
同时出现在两个⽂件中的用户允许使⽤
两个⽂件如果都不存在,只有root能使⽤

[root@manged ~]# echo redhat > /etc/at.deny 
[root@manged ~]# su - redhat 
[redhat@manged ~]$ atq
You do not have permission to use atq.
会发现root设置的权限后,Redhat的这个用户使用不了at命令

二、crontab命令

按计划重复运⾏的作业被称为周期性作业。红帽系统默认⾃带了特别针对周期性作业的 crond守护进程,由 cronie 软件包提供,且默认启⽤并启动。

[root@manged ~]# rpm -ql cronie 查看cronie的相关文件

命令 用途
crontab -l 列出当前⽤⼾的计划作业
crontab -r 删除当前⽤⼾的所有作业
crontab -e 编辑当前⽤⼾的作业
crontab filename 删除所有作业,并替换为 filename 读取的作业。如果没有指定⽂件,则使⽤ stdin。

crontab ⽂件中的字段按以下顺序显⽰:
分钟、小时、几号、月、星期几、命令

* 表⽰ ⽆关紧要或者始终。
数字可⽤于指定分钟数或⼩时数、⽇期或⼯作⽇。对于⼯作⽇,0 表⽰星期⽇,1 表⽰星期⼀,2 表⽰星期⼆,以此类推。7 也表⽰星期⽇。
x-y 表⽰范围,x 到 y(含)
x,y 表⽰列表。列表也可以包含范围,例如 分钟 列中的 5,10-13,17 表⽰作业应当在每⼩时过去 5 分钟、10 分钟、11 分钟、12 分钟、13 分钟和17 分钟后运⾏。
*/x 表⽰ x 的时间间隔,例如 分钟 列中的*/7 表⽰每七分钟运⾏⼀次作业

[root@manged ~]# cat /etc/crontab 文件可以查看计划任务的写入格式
例子:
以下作业将在每年 2 ⽉ 2 ⽇上午 9 点准点执⾏命令 /usr/local/bin/yearly_backup。

0 9 2 2 * /usr/local/bin/yearly_backup

以下作业将在每个⼯作午夜前的两分钟运⾏命令 /usr/local/bin/daily_report。

58 23 * * 1-5 /usr/local/bin/daily_report

以下作业将在七⽉每周五的上午 9 点和下午 5 点之间,每 5 分钟向该作业的所有者发送包含单词 Chime 的电⼦邮件。

*/5 9-16 * Jul 5 echo “Chime”

用户权限

/etc/cron.allow,写在该⽂件的⼈可以使⽤ cron 任务
/etc/cron.deny,⿊名单
同时存在于两个⽂件中的⽤⼾,默认允许使⽤
两个⽂件如果都不存在,只有root能使⽤

跟at命令是一样的。

三、at命令和crontab命令的区别

at和crontab都是用于任务调度的命令,但是它们的使用场景和运行方式不同,at命令适用于一次性的任务调度,而crontab命令适用于周期性的任务调度。。

at命令是一次性的任务调度,它允许用户将任务安排到指定的时间点运行一次,该任务将在指定的时间点被执行一次后立即被销毁。at命令适用于只需要执行一次的任务,例如立即发送一封电子邮件或在明天早上备份系统。

crontab命令则可以定期重复执行指定的任务,它可以在固定的时间间隔内不间断地运行任务。crontab命令常用于周期性的任务,例如每天备份数据库或定时清理日志文件。

你可能感兴趣的:(运维,服务器)