【Linux命令】at、crontab定时任务
crontab定时任务(周期性)
一、简介
通过crontab命令可以在固定的间隔执行系统指令或shell脚本
二、crontab配置文件:
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。
查看crontab配置文件:
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
分析:
第一行指定系统使用的shell环境
第二行指定系统执行命令的路径
第三行指定crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
注意:所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致
三、crontab文件含义
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段
格式如下:minute hour day month week command
minute:代表一小时内的第几分,范围 0-59。
hour:代表一天中的第几小时,范围 0-23。
mday:代表一个月中的第几天,范围 1-31。
month:代表一年中第几个月,范围 1-12。
week:代表星期几,范围 0-7 (0及7都是星期天)。
who:要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。
command:所要执行的指令。
"*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
","分散的数字(不一定连续),如1,2,3,4,7,9。
四、crontab命令详解
格式:crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
- • -u user:用于设定某个用户的crontab服务;
- • file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
- • -e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;
- • -l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;
- • -r:从/var/spool/cron目录中删除某个用户的crontab文件。
- • -i:在删除用户的crontab文件时给确认提示。
五、crontab实例
1)每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)
* * * * * command
2)每小时的第3和第15分钟执行command
, * * * * command
3)每天上午8-11点的第3和15分钟执行command:
, - * * * command
4)每隔2天的上午8-11点的第3和15分钟执行command:
, - */ * * command
0 0 */2 * * command //每隔两天凌晨执行command
5)每个星期一的上午8点到11点的第3和第15分钟执行command
, - * * command
6)每晚的21:30重启smb
* * * /etc/init.d/smb restart
7)每月1、10、22日的4 : 45重启smb
,, * * /etc/init.d/smb restart
8)每周六、周日的1 : 10重启smb
* * , /etc/init.d/smb restart
9)每天18 : 00至23 : 00之间每隔30分钟重启smb
, - * * * /etc/init.d/smb restart
10)每一小时重启smb
* */ * * * /etc/init.d/smb restart
11)晚上11点到早上7点之间,每隔一小时重启smb
* -/ * * * /etc/init.d/smb restart
12)每月的4号与每周一到周三的11点重启smb
* mon-wed /etc/init.d/smb restart
13)每小时执行/etc/cron.hourly目录内的脚本
* * * root run-parts /etc/cron.hourly
at定时任务(一次性的)
at只在固定时间执行一次任务。
格式:
# 在命令行输入at,然后指定执行的时间,在输入enter键换行,接下来输入要执行的任务,多任务继续输入enter键换行隔开。输入的任务完毕,此时按下ctrl+d,则会出现“at-> ”,此时输入完毕。屏幕底下会出现类似“job 3 at 2019-11-25 09:17”的字样,证明任务指定成功。 at #执行的时间#
at->#执行的任务脚本#
at->#执行的任务脚本#
at->
PS:如果设置的时间当天已经过了,则会在第二天的固定时间执行
参数:
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V显示版本信息
-q<> 使用指定的队列
-t<> 以时间参数的形式提交要运行的任务 # 查看at的进程
[root@VM_0_10_centos ~]# ps -ef | grep atd
[root@VM_0_10_centos ~]# systemctl status atd # 查看任务
[root@VM_0_10_centos ~]# atq
或
[root@VM_0_10_centos ~]# at -l # 查看任务内容
[root@VM_0_10_centos ~]# at -c 2 #删除(这里的2是任务的序号,可以使用at -l查看)
[root@VM_0_10_centos ~]# atrm 2
实例:
# 指定在今天09:00将时间写入testmail.txt文件中
[root@VM_0_10_centos ~]# at 09:00
at> date >> testmail.txt<EOT>
job 1 at Mon Nov 25 09:00:00 2019 # 例如当前时间为08:50,如果输入一个08:00执行的任务,则会在输入命令后,提示第二天执行:
[root@VM_0_10_centos ~]# at 08:00
at> echo "8:00" >> testmail.txt
at> <EOT>
job 2 at Tue Nov 26 08:00:00 2019 # 使用相对时间,1分钟后执行
[root@VM_0_10_centos ~]# at now+1 minutes
at> echo hello > testmail.txt
at> <EOT>
job 3 at Mon Nov 25 09:16:00 2019 # 使用未来时间的绝对时间
[root@VM_0_10_centos ~]# at 09:18 2019-11-25
at> echo world >> testmail.txt
at> <EOT>
job 4 at Mon Nov 25 09:18:00 2019 # 三天后的下午5点执行/bin/ls
# at 5pm+3 days
# at> /bin/ls
PS:如果不希望某些账号使用at命令,可以在/etc/at.deny文件中写入禁止的
用户名。
【Linux命令】at、crontab定时任务的更多相关文章
- Linux命令之Crontab定时任务,利用Crontab定时执行spark任务
Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...
- 使用linux下的crontab定时任务跑定时脚本
使用linux下的crontab定时任务跑定时脚本 tags:定时任务 定时脚本 crontab linux定时脚本 linux 引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的.我们这次就来说 ...
- 工作中常用的Linux命令:crontab命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
- Linux 命令之 crontab
crontab 简介 crontab 主要用于需要管理周期执行定时任务的场景 crontab 安装 (有些系统默认已经带了 crontab,无需安装的朋友可以直接跳过本节) 安装: yum insta ...
- linux命令之crontab详解
crontab命令: crontab -l : 显示定时任务列表 crontab -e: 编辑定时任务 crontab -r : 删除所有定时任务 基本格式 : * * * * * command ...
- 每天一个linux命令(56)--crontab命令
上一节学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,Linux 系统则是由 cron(crond)这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- 工作中常用的Linux命令:crontab命令,定时任务执行命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
- Linux应用之crontab定时任务的设置
实现Linux定时任务有:cron.anacron.at等,这里主要介绍cron服务. 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使 ...
- linux 下的 crontab 定时任务工具
以下内容转自:https://www.cnblogs.com/longjshz/p/5779215.html 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep c ...
- Linux命令(003) -- crontab
一.准备知识 Linux下的任务调度分为两类:系统任务调度和用户任务调度. (1).系统任务调度 系统任务调度是系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.在/etc目录下有一个cro ...
随机推荐
- pycharm问题解析(connecting to console)
1. 场景描述 以前一直用的anaconda3,临时下载了demo用的python2,就下载anaconda2安装了下,测试过后,发现pycharm中以前的项目跑不起来了,一直报:connecting ...
- JAVA 十六进制和十进制、二进制转换
java十六进制和十进制.二进制转换 十进制转化成十六进制 Integer x = 100; hex = x.toHexString(x); 十六进制转化成十进制 Integer.parseInt(h ...
- Java菜题
编程语言:Java 2019年全国高校计算机能力挑战赛分设大数据算法赛(所谓的内部试题) 一.选择题(共15题,每题3分,共45分) 1. 在Java中下列说法正确的是( ) A.一个子类可以有多 ...
- EventBus 使用/架构/源码分析
EventBus是针对Android优化的发布-订阅事件总线,简化了Android组件间的通信.EventBus以其简单易懂.优雅.开销小等优点而备受欢迎. github 地址:https://git ...
- 内核态发生非法地址访问是否会panic
https://mp.weixin.qq.com/s?__biz=MzAwMDUwNDgxOA==&mid=2652663676&idx=1&sn=b18ab57322594e ...
- 练手WPF(一)——模拟时钟与数字时钟的制作(中)
今天接着制作数字时钟 数字时钟主要用到Path控件,主要用于定义数字笔划的形状. (1)添加一个DigitLine类 数字时钟的数字8由7笔组成,看如下定义的字段字符串数组PathDatas,每个st ...
- 在Vue中使用i18n 国际化遇到 Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
最近用Vue在搭建前端框架,在引用i18n时,运行的时候报错:Uncaught TypeError: Cannot assign to read only property 'exports' of ...
- PlayJava Day011
今日所学: /* 2019.08.19开始学习,此为补档. */ Java异常处理 1.异常的概念:程序运行过程中发生的问题,从而引发了中断. 2.捕获和处理异常:Java中,用try ... cat ...
- Java生鲜电商平台-电商会员体系系统的架构设计与源码解析
Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明:Java生鲜电商平台中会员体系作为电商平台的基础设施,重要性不容忽视.我去年整理过生鲜电商中的会员系统,但是比较粗,现在做一个最好的整 ...
- querySelectorAll和getElementsByClassName获取元素的区别
querySelectorAll()方法是HTML5新增的方法,通过传入一个css选择符,返回所有匹配的元素而不仅仅是一个元素.这个方法返回的是一个NodeList的实例.那么它和通过getEleme ...