美文网首页
linux 定时任务

linux 定时任务

作者: 麟之趾a | 来源:发表于2020-05-20 20:59 被阅读0次

任务计划/周期性任务执行

未来的时间点执行一次某任务: at batch
周期性运行某任务: crontab
以上执行结果:会通过邮件发送给用户

邮件服务

本地电子邮件服务
smtp:简单邮件传输协议
pop3:邮局协议
imap4: 互联网邮件访问协议

mail命令

mail 命令
mailx: 收发互联网邮件
MUA: 用户收发邮件工具。我们平时用的web,也一种MUA
mail/mailx  [-S 'SUBJECT'] username[@hostname]
邮件正文生成
1) 交互式输入,以点号单独成行表示正文结束 ctrl+D 提交也可以
2)输入重定向
3)通过管道

任务计划

at

at:未来时间执行一次
at [option]...  TIME
option:
-l 查看队列 at -l 或 atq
-f 从指定文件中读取作业任务
[root@db02 ~]# at -f /root/task_file now+1min
job 2 at Tue May 26 07:43:00 2020
您在 /var/spool/mail/root 中有邮件
[root@db02 ~]# cat task_file 
echo e
-d 删除任务  at -d  3  删除3号任务
-q queue:指明队列,at 有 a ??? 多个序列
-c 查看作业执行内容 at -c 任务号
TIME:
HH:MM [YYYY-mm-dd]
noon (中午12点) midnight(午夜12点)teatime(下午4点)tomorrow
now+#
#单位:minutes hours  days  weeks
[root@db02 ~]# at now+1min   1分钟后运行命令
at> ls /root
at> <EOT>
job 1 at Tue May 26 07:40:00 2020
[root@db02 ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root                  Tue May 26 07:40  23/672   "Output from your job        1"


注:at密码有默认执行命令的环境,当我们推出终端,at命令需要执行,所有它有自己的一个环境
注:作业执行结果是邮件发送给提交作业的用户

batch

batch 会让系统自行选择在系统资源空闲时间去执行指定任务
其余内容与at一样

周期性执行任务 cron

服务程序
cronle:主程序包,提供了crond守护进程及相关的辅助工具
我们要时刻保证crond守护进程的运行状态。这个进程会时刻检测我们的任务脚本
像crond提供的作业方式不同于at,它需要使用专有的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件,要使用crontab命令

cron 任务分为两类

系统cron任务:主要用于实现系统自身的维护,手动编辑/etc/crontab
用户cron任务: crontab命令 /var/spool/cron/USERNAME

系统cron的配置格式

[root@db02 ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


SHELL:使用哪个shell
PATH:定时任务的路径变量
MALTO:执行结果的邮件发送给哪个用户
1) 每一行定义一个周期性任务共7个字段
2)此处的环境变量,不同于用户登录的环境变量,因此建议使用命令的绝对路径,或者自定义PATH环境变量
3)执行邮件发送给MALTO用户

用户cron

配置文件/var/spool/cron/USERNAME

1)  每行共有六个字段
2)此处的环境变量,不同于用户登录的环境变量。因此建议使用命令的绝对的路径,或则自定义环境变量
3) 邮件发送给当前用户
# 时间表示法
1) 特定值
给定时间点,有效取值范围内的值。注意日期和周不要同时使用
2)* 表示给定时间点上有效取值范围内所有值,表 "每" 什么之意
3) 离散取值
在给定时间点上,使用逗号分隔的多个值
9 8 * * 3,5
4)连续取值
在时间点上使用- 连接开头和结尾
0 9-18 * * 1-5 每周一到周五的9点到18点的0分执行任务
5)在指定的时间点上定义步长/#
#:#即步长
*/5 * * * * 每五分钟执行一次任务
注意:在指定的时间点,不能被步长整除时,其意义不复存在。
最小时间单位为分钟,想完成秒级任务,需要借助其他机制,定义每分钟任务,而利用脚本循环多次

### crontab 命令
crontab [-u user] [-l | -r | -e| -i]
-u user:root用户可以为指定用户管理cron任务
-e:编辑任务
-l:列出所有任务
-r:移除所有任务,即删除/var/spool/cron/USERNAME文件
-i:在使用-r移除所有任务,提示用户是否删除
注意:执行结果都以邮件发送给当前用户,如果拒绝接收邮件,可使用以下命令
COMMAND > /dev/null   如果命令执行失败,依然接收邮件
COMMAND &> /dev/null
定义COMMAND命令时,如果命令中有用到%,需要对其转义,但放置于单引号中的%不用转义即可

思考:某任务在指定时间因关机未能执行,下次开机会不会自动执行?
答:不会
如果想要其继续执行,则使用anacron实现

相关文章

  • day 17

    第13章 Linux系统定时任务Cron(d)服务应用实践 1.1、Linux定时任务 1.1.1、什么是定时任务...

  • linux crontab: 定时任务

    参考 crontab 定时任务 Linux之crontab定时任务

  • linux Crontab

    Linux Crontab:Linux中用于执行定时任务的工具crontab -e:编辑定时任务crontab -...

  • 定时任务

    Linux定时任务 什么是定时任务: 周期性的执行任务计划的软件,linux里定时任务常用软件有:Crond 使用...

  • day17

    Linux系统定时任务 3W1H 框架 Linux系统定时任务: 1、什么是定时任务? 周期性的执行任务计划的软件...

  • day17-Linux系统定时任务

    Linux系统定时任务 1.什么是定时任务? 周期性的执行任务计划的软件,Linux定时任务软件的常用软件cron...

  • 作业-第04周--课堂-Day17-linux系统定时任务Cro

    Day17 课堂笔记 1 Linux系统定时任务 1、什么是定时任务?周期性的执行任务计划的软件,Linux定时任...

  • Linux笔记

    Linux定时任务 Mysql备份 Linux+Mysql定时备份 * * * * * user task分 时 ...

  • 79.linux定时任务

    Linux定时任务 通过制定 ```crontab -e``编辑和开启定时任务

  • Linux定时任务

    Linux定时任务 centOS: 使用crontab -e //编辑 crontab -l //查看定时任务 生...

网友评论

      本文标题:linux 定时任务

      本文链接:https://www.haomeiwen.com/subject/nacoohtx.html