linux任务工作页,linux工作调度(计划任务)

linux工作调度有两种:at,cron

·at:at是一个可以处理仅执行一次就结束调度的命令。说白了就是在某个时间需要干某一件事,例如在2018年10月12日下午一点要执行一个数据库矫正脚本。

·crontab:crontab是周期性的调度设定的命令。说白了就是周期性的例如每天下午1点都要去执行一个数据库矫正脚本。

一、at的使用

1、at启动

1.1可以使用/etc/init.d/atd restart 启动at服务

1.2可以使用chkconfig atd on设置服务开机自启

2、at的运行方式

使用at生成所要运行的调度任务是会在/var/spool/at/目录下生成一个如下图所示(此次生成名为a0000401877c58)的文件。待任务执行后该文件会自动删除。

101f6d7821ab143e72630a93c4713f5c.png

3、哪些用户可以使用at?

我们可以使用两个文件/etc/at.allow和/etc/at.deny来控制at的使用限制。

3.1 /etc/at.allow,被该文件记录的用户可以使用at

3.2  /etc/at.deny,被该文件记录的用户不能使用at

3.3一般系统中只有at.deny文件,并且该文件为空。即所有用户都可以使用at命令。

3.3.1、如果两个文件都不存在,则只有root用户才能使用crontab命令。

3.3.2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。

3.3.3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。

3.3.4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab。如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

82df2cdf72db9df170799dd6706809f1.png

4、at的语法格式。

·at [-dvlm] TIME

·at -c 任务编号

4.1、at  -m:当at调度任务完成后,即使没有输出信息,也要给用户发送email。

4.2、at  -l:相当于atq,列出当前系统上的所有用户的at调度任务。

4.3、at  -d:相当于atrm,可以取消一个在at调度列表中的任务。

4.4、at  -v:使用较明显的时间格式列出at调度任务列表。

4.5、at -c:可以列出指定任务的实际命令内容。

4.6、TIME的格式:

4.6.1、HH:MM:例如,4:30在今天的4点30分执行,若已经超过该时刻则在下一天的指定时间执行。。

4.6.2、HH:MM  YYYY-MM-DD:例如,4:30 2018-9-31

4.6.3、HH:MM + number [minutes/hours/days/weeks]:例如 now + 5 minutes,在现在往后五分钟后执行。

注意,at命令执行与终端无关,默认将所有的standed output/standard error output 输出至执行者的mailbox中。所以如果任务中有例如"echo "hello""命令时在终端是看不到的,此时要想看到可以吧输出重定向,例如你在tty1登录,可以使用“echo "hello" >/dev/tty1” 。

二、crontab的使用

1、启动

1.1:可以使用/etc/init.d/crond start 启动服务

1.2:可以使用systemctl enable crond设置开机自启

2、哪些用户可以使用crontab命令。

默认所有用户均可以使用crontab命令。因为系统中只存在/etc/cron.deny文件,而该文件为空。其他的同上文的at。

297ac2de3ec470caca1ef190c04337e6.png

如果不希望某用户使用crontab命令,可以将用户名写在/etc/cron.deny中。

3、cron的运行方式

3.1、/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的。当用户使用crontab命令创建调度任务时,该项工作会被写到/var/spool/cron/目录下,以用户名命名的文件中,例如使用用户sa创建了任务,那么就会存在/var/spool/cron/sa文件。

3.2、cron任务会被记录到/var/log/cron文件中。

4、cron语法

4.1、crontab [-u username] [ -l|-e|-r]

-u user:智能root用户来运行,用来设定某个用户的crontab服务,例如,“-u sa”表示设定sa用户的crontab服务。

-e:编辑当前用户crontab文件内容。

-l:显示crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:删除当前用户所有crontab的调度任务,如果要删除某一项任务,可以使用crontab -e去编辑。

4.2、crontab -e命令所编辑的文件的格式:

4.2.1、字段之间以空格分隔

4.2.2、一共6个字段,前五个指定时间,最后一个为执行的命令,格式如下

{minute}  {hour}  {day-of-month}  {month} {day-of-week}  {full-path-to-shell-script}

minute: 区间为 0 – 59

hour: 区间为0 – 23

day-of-month: 区间为0 – 31

month: 区间为1 – 12. 1 是1月. 12是12月.

Day-of-week: 区间为0 – 7. 周日可以是0或7

时间字段可以搭配几个特殊的符号——"*"、"/"、"-"、",",

*:代表所有的取值范围内的数字,即任何时刻都接受。

"/":代表每的意思,每隔n分钟的意思,例如"/5"表示每5个单位,

"-":代表一段时间范围,即从某个时间到某个时间,

",":代表分隔时段的意思,例如每天三点和6点都要执行某一任务。

5、系统配置文件:/etc/crontab

crontab -e是针对用户(非root等系统用户)的cron,如果是系统用户只需要编辑/etc/crontab就可以。

5.1、/etc/crontab文件内容

69bd26d656b915f813b72887104bb83d.png

01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root ,这一行代表的是执行的级别为root身份当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是一个目录内(/etc/cron.hourly)的所有可执行文,也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可,还不需要使用到crontab -e的程式!

18fdd527597dc52925b71c162413fbc2.png

MAILTO=root:当/etc/crontab文件中的任务执行发生错误或该工作的执行结果输出至stdout或stderr时,将信息发送给哪个用户,默认是给root发送邮件。我们可以指定某一用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值