【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 ...
随机推荐
- Spring Boot 启动以后然后再加载缓存数据 CommandLineRunner
实际应用中,我们会有在项目服务启动完成以后去加载一些数据或做一些事情(比如缓存)这样的需求. 为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRu ...
- 使用pytorch时所遇到的问题总结
使用pytorch时所遇到的问题总结 1.ubuntu vscode切换虚拟环境 在ubuntu系统上,配置工作区文件夹所使用的虚拟环境.之前笔者误以为只需要在vscode内置的终端上将虚拟环境切换过 ...
- vs未能正确加载CSharpPackage包,未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
VS2017打开项目时提示未能正确加载CSharpPackage包, 可以使用 devenv命令工具来解决,操作如下 打开vs2017开发人员命令提示符(请使用管理员身份运行),如图 敲入 deve ...
- python登陆代码简单逻辑
孩子:妈妈,我想要一个登陆的接口 妈妈:写,现在写,写1个够吗? 孩子:够了,妈妈真好,谢谢妈妈. 需求写一个简单的登陆逻辑: 1.定义一个账号和密码 2.输入账号和密码,密码要求密文 3.输入正确提 ...
- C++ 自增、自减运算符的重载和性能分析
01 ++.--运算符重载函数的格式 自增运算符和自减运算符是有前置和后置之分的,如: a++ // 后置自增运算符 ++a // 前置自增运算符 b-- // 后置自减运算符 --b // 前置自减 ...
- 图说真实上海IT圈:张江男VS漕河泾男
图说上海真实IT圈:张江男VS漕河泾男 架构师修炼宝典 Java 通过比较上海各住宅小区在工作日晚餐与夜宵时段一人食外卖订单指数我们会发现: 上海IT圈两大胜地: 张江高科和漕河泾双双上榜 其中张 ...
- Tasteless challenges hard WP
hard Level 5- Fred CMS 十有八九是注入,不过测试引号和转义符并没发现什么,于是跑了下密码字典,竟然发现网页提示 sql injection detected! ,然后发现原来是密 ...
- 「SAP技术」 SAP MM MPN物料的采购初探
「SAP技术」 SAP MM MPN物料的采购初探 1, MPN物料号与我方正常使用料号物料主数据之间的LINK关系维护 MPN料号 14000005 , 我方料号11000250 , 2,采购信息记 ...
- 「SAP 技术」SAP MM 物料主数据利润中心字段之修改
SAP MM 物料主数据利润中心字段之修改 近日,收到业务部门报的一个问题,说是MM02去修改物料的利润中心字段值,系统报错说物料库存存在,不让修改. 笔者查询了该物料的库存,当期库存并不存在.MMB ...
- vue-router Uncaught (in promise) NavigationDuplicated 错误
使用 vue-router 编程式实现页面跳转 this.$router.replace({ path: '/pub' }); 出现错误如下图 原因:vue-router 在 3.1 版本之后把 th ...