Linux利用at设置任务自动化,Linux未来任务的调度——at,batch,crontab命令

### 在linux中,我们可以实现对于任务的未来调度,从而可以借助于linux实现半自动化运维操作方式,简而言之就是可以在未来的某个时间点,系统可以自动运行我们部署的任务

前提:

需要一个准确的时间

可以支持任务调度的应用程序

**注意**:

在计划任务中,所有执行的命令的输出结果,这类及结果均以邮件的方式发送至指定的用户邮箱中;

邮箱的发送:

mail命令

mail [-s SUBJECT]  USERNAME[@DOMAINNAME]

(Ctrd + d发送)

系统用户的邮箱的目录/var/spool/mail/

at命令的常用用法:

at, batch, atq, atrm - queue, examine or delete jobs for later execution

at [option] timespec

timespec:

1.HH:MM [YYYY-mm-dd]

2.noon,midnight,teatime

3.tomorrow

4.now+#UNIT

UNIT:minutes,hours,days,or weeks

at定义的计划任务都在某个特定的任务队列中;默认at只启用了一个at队列,通常用a表示;

b2c4cbc560f9c140308dc76c08f2b30f.png

at命令的常用用法:

at [-q QUEUE_NAME] time

定义计划任务,输入任务之后,Ctrl+d提交

atq或at -l

查看所有任务队列中尚未执行计划任务列表;

atrm JOB_ID或at -d JOB_ID

撤销任务队列中尚未执行的指定任务标识符的计划任务

at -f /PATH/TO/SOMEFILE time

从文件中读取命令操作而不是标准输入中读取

at -c JOB_ID

查看指定的计划任务的具体内容;

比如:

在2019年新年跨年时给liujingyu发一封电子邮件,祝他新年快乐。

61ef496c710790ab51ac424fde9b2630.png

用at -c 5 命令查看以后,只有最后两行是我们预先写的语句;

1f1ed786fa0d6d70a7c2ae112a772cbb.png

batch命令:

与at命令类似的,默认的队列是b,都是一次性执行的定义的计划任务;

区别是:

batch命令定义计划任务时,无需指定执行时间,系统会自动选择比较空闲的时间来完成此任务;

crond任务的调度进程;能够识别和周期性的执行crontab命令定制的计划任务;

crond定义的计划任务分为两类:

系统任务:

全局性任务:通常使用/etc/crontab文件定义;

efbef3b09c8ec2cdb54c608ef1e54cb7.png

其不难看出通用格式:

*  *   * *  * user-name command to be executed

分钟 小时 天 月 星期

注意:

* * * * *:定义周期性执行计划任务的具体时间;

user-name:执行此任务的用户;

command to be executed:此次计划任务的执行主体,建议使用绝对路径;

用户任务:

个体性任务通常存放在/var/spool/cron/目录下的与用户名对于的文件中

此类文件格式:

*  *   * *  * command to be execute

时间表示法:

1.某个特定时间:给定的时间点的有效取值范围内的所有有效值;

0 3 4 9 * (9月4日3点整执行脚本)

2.通配符时间:"*",表示"每..."的意思;

3.离散的时间点:

0 8,20 * * 1,2,4,5 (周1、2、4、5的8点和20点整执行脚本)

4.连续的时间段

0-10 8-12 * * *

5.步进时间:

*/3 * * * * 每三分钟执行一次

*/9 * * * *:无法真正实现每9分钟执行一次;因此默认情况下,步进长度应该是能够被60整除的数字;

注意:最小的时间单位是分钟,如果计划使用不足一分钟的若干秒为执行周期,则必须借助于其他的机制,如:编写shell脚本;

crontab命令:

crontab [-u user] file

crontab [-u user] [-l | -r | -e] [-i] [-s]

-u user:超级用户为自己或其他用户设置或编辑周期性任务时使用的选项;

-l:查看所有的已经被定义好的计划任务列表;

-e:使用vi编辑器编辑临时的crontab文件;

-r:移除所有的计划任务;建议谨慎使用;

-i:在使用-r选项时,能够进行交互式删除;

crontab -e

* * * * * root /usr/bin/date

ls /var/spool/cron/root

里边就会有刚才写的脚本;

mail

查看邮件内容

显示日期;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
at,batchcrontab都是Linux系统中常用的定时任务工具,它们分别用于在指定的时间或时间间隔内执行某些操作。它们的用法如下: 1. at at命令用于在指定的时间执行一次性任务。具体使用方法如下: ```bash at [options] time ``` 其中,time可以是一个绝对时间(例如2022-01-01 12:00:00),或者相对时间(例如now+1 hour)。at命令会在指定的时间执行一条命令命令可以从标准输入中读取,也可以从文件中读取。 例如,要在2022年1月1日12:00:00执行命令`/path/to/command`,可以使用以下命令: ```bash echo "/path/to/command" | at 2022-01-01 12:00:00 ``` 2. batch batch命令用于在系统负载低的时候执行任务。具体使用方法如下: ```bash batch [options] [filename] ``` 其中,filename表示要执行的命令文件名。如果不指定filename,则会从标准输入中读取命令batch命令会在系统负载低于某个阈值时执行命令。这个阈值可以通过设置系统变量来修改。默认情况下,batch命令会在系统负载低于0.8时执行命令。 例如,要在系统负载低于0.5时执行命令`/path/to/command`,可以使用以下命令: ```bash echo "/path/to/command" | batch -l 0.5 ``` 3. crontab crontab命令用于在指定的时间间隔内定期执行任务。具体使用方法如下: ```bash crontab [options] filename ``` 其中,filename表示包含定时任务的文件名。这个文件中可以包含多个定时任务,每个任务占一行。 定时任务的格式如下: ``` * * * * * command ``` 其中,第1~5个星号表示时间间隔,分别表示分钟、小时、日、月、周。星号表示任意值。例如,如果第1个星号是5,则表示每小时的第5分钟执行一次任务。 command表示要执行的命令。 例如,要每天的9点执行命令`/path/to/command`,可以在crontab文件中添加以下内容: ``` 0 9 * * * /path/to/command ``` 这个命令表示在每天的9:00执行命令`/path/to/command`。 总体来说,at、batchcrontab都是非常实用的定时任务工具,可以根据实际需求选择使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值