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定时任务的更多相关文章

  1. Linux命令之Crontab定时任务,利用Crontab定时执行spark任务

    Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...

  2. 使用linux下的crontab定时任务跑定时脚本

    使用linux下的crontab定时任务跑定时脚本 tags:定时任务 定时脚本 crontab linux定时脚本 linux 引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的.我们这次就来说 ...

  3. 工作中常用的Linux命令:crontab命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  4. Linux 命令之 crontab

    crontab 简介 crontab 主要用于需要管理周期执行定时任务的场景 crontab 安装 (有些系统默认已经带了 crontab,无需安装的朋友可以直接跳过本节) 安装: yum insta ...

  5. linux命令之crontab详解

    crontab命令: crontab -l : 显示定时任务列表 crontab -e: 编辑定时任务 crontab -r : 删除所有定时任务 基本格式 :  * * * * * command  ...

  6. 每天一个linux命令(56)--crontab命令

    上一节学习了 at  命令是针对仅运行一次的任务,循环运行的例行性计划任务,Linux 系统则是由 cron(crond)这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  7. 工作中常用的Linux命令:crontab命令,定时任务执行命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  8. Linux应用之crontab定时任务的设置

    实现Linux定时任务有:cron.anacron.at等,这里主要介绍cron服务. 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使 ...

  9. linux 下的 crontab 定时任务工具

    以下内容转自:https://www.cnblogs.com/longjshz/p/5779215.html 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep c ...

  10. Linux命令(003) -- crontab

    一.准备知识 Linux下的任务调度分为两类:系统任务调度和用户任务调度. (1).系统任务调度 系统任务调度是系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.在/etc目录下有一个cro ...

随机推荐

  1. Java中Set与Set<?>到底区别在哪?

    您可能知道,无界通配符 Set<?> 可以容纳任何类型的元素,而原始类型Set也可以容纳任何类型的元素.那它们之间有什么区别呢? 1.关于Set<?>的两个事实 关于Set&l ...

  2. 开发常用Git/Linux/idea命令快捷键总结(持续更新)

    在开发过程中,会使用越来越多的命令,或快捷键,来帮助我们提高工作效率.本文记录了我在平时积累的常用命令,分享给大家. git命令 基本命令 set LESSCHARSET=utf-8 --idea T ...

  3. [算法]LeetCode 152:乘积最大子序列

    题目描述: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6.示 ...

  4. linux 安装 nvm, node.js, npm

    vscode在wsl中开发node应用,如何安装nvm? git clone git@github.com:nvm-sh/nvm.git ~/.nvm 设置淘宝registry npm config ...

  5. kfifo

    kfifo 的一些伪代码 kfifo_len() out = LOAD fifo->out smp_rmb() len = LOAD fifo->in - out kfifo_in() k ...

  6. C#上手练习4(Break、CONITINUE语句)

    C# 中的 continue 语句有点像 break 语句.但它不是强制终止,continue 会跳过当前循环中的代码,强制开始下一次循环. 对于 for 循环,continue 语句会导致执行条件测 ...

  7. StringBuilder修改字符串内容,增,删,改,插

    package seday01;/** * 字符串不变对象特性只针对字符串重用,并没有考虑修改操作的性能.因此String不适合频繁修改内容. * 若有频繁修改操作,使用StringBuilder来完 ...

  8. python数据可视化简介(一)

    目录 一:配置jupyter notebook 二:Matplotlib图像实例   数据可视化是用图形或者表格的形式进行数据显示,用图形化的手段,清晰有效地传递与沟通信息.既要保证直观易分析,又要保 ...

  9. 重新认识快速视图窗体(Quick View Form)

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复158或者20151009可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 在我的 微软Dynamics C ...

  10. Mac进行Flutter开发的配置

    可以参数Flutter中文网提供的方法: https://flutterchina.club/setup-macos/ 使用镜像 由于国内访问Flutter有时会受到限制(博主公司网络自带VPN没有这 ...