Linux这么简单之定时任务

1.at

含义

使用 at 命令可以调度任务的自动执行。at 文件只执行一次任务,然后便从目录中删除这些文件。

命令

选项选项用法或含义
-m当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I列出所有的指定(atq的别名)
-d删除指定(atrm的别名)
-v显示任务将被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q<列队> 使用指定的列队
-f<文件> 从指定文件读入任务而不是从标准输入读入
-t<时间参数> 以时间参数的形式提交要运行的任务

相关命令

atq:列出用户的计划任务,如果是超级用户将列出所有用户的任务,结果的输出格式为:作业号、日期、小时、队列和用户名。
atrm:根据Job number删除at任务。
batch:在系统负荷允许的情况下执行at任务,也就是在系统空闲的时候才执行at任务。

时间定义

(1)绝对计时法:
接受在当天的hh:mm(小时:分钟)式的时间指定,假如该时间已过去,那么就放在第二天执行。
接受midnight(深夜),noon(中午),teatime(4:00)等比较模糊的词语来指定时间。
接受12小时计时制,即在时间后面加上AM(上午)或PM(下午)。
接受具体日期如:month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日:月:年)。指定的日期必须跟在指定时间的后面。
(2)相对计时法:
格式为:now + count time-units ,now就是当前时间,time-units是时间单位,如minutes、hours、days、weeks。count是时间的数量,几天,几小时。
可以直接使用today、tomorrow来指定完成命令的时间。

列子
systemctl start atd  //启用at任务服务
systemctl enable atd  //查看当前用户的所有任务(即还没有执行的任务)
atq 或者 at -l   // 查看所有用户的任务,展示出所有排定好的任务,且每个任务都有一个job ID
atrm 3或者at -d 3  //删除编号为3的任务
echo 'echo aaa > /var/han' | at now+1min //设置1分钟后执行指定命令

2.crontab

Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
Crontab为Linux下的计划任务程序,对应的服务为crond;配置定时任务的方式有两种,对应的Cron任务配置文件也有两种:
(1)系统级别的任务,对应全局配置文件:直接通过命令编辑配置文件vi /etc/crontab,任务查看cat /etc/crontab;
(2)用户级别的任务,对应用户配置文件:通过crontab -e编辑任务,自动保存到/var/spool/cron/<user_name>文件,即以用户名命名的文件,通过crontab -l查看。推荐此方式,系统会检查任务的配置语法。

命令格式

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
Crontab格式说明

文件说明

文件名说明
/etc/crontab全局任务配置列表
/etc/cron.allow允许执行的用户列表,文件存在时,只有该文件中的用户才能执行计划任务,一般不创建此文件
/etc/cron.deny不允许执行任务的用户列表,文件不存在时,出现在文件中的用户将不能执行计划任务,一般用于隔离不允许执行的用户
/etc/cron.d在此目录下增加计划任务,可以加到不同的文件以便任务的区别,效果以及文件配置等同于/etc/crontab
/etc/crontab四个按周期执行的目录,用户可在此目录下自定义任务文件,执行时间由 /etc/crontab 文件中的 run-parts 决定

/etc/crontab文件内容如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed

3.crontab标准化工作流程

1.计划任务脚本指定存放位,便于维护和定期备份

2、写定时任务前必须在前面写注释,包括以下:

添加计划任务的人,添加任务的时间,任务有效期,计划任务脚本的对象,脚本的作用, 以及其他需要提醒其他注意的事项

3.执行的脚本前加上/bin/bash或者/bin/sh,脚本必须使用完整的绝对路径

4、定时任务,需要尽避免标准输出和标准错误输出结尾加上>/dev/null2>&1

计划任务的标准输出和标准错误输出都会给root用户以邮件,很容易撑满磁盘消耗磁盘inode

5.能用命令完成的也写在脚本里

  1. 在指定用户下执行相关的定时任务

7.制定标准的书写规范

其他使用注意:

环境变量问题:计划任务的脚本得环境变量需要在脚本重新定义,可以手动在脚本内加载环境变量的配置文件如./etc/profile.

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值