Linux 定时任务crontab命令实现自动循环执行shell脚本

小郝不负流年
小郝不负流年   + 关注
2021-02-19 22:56:15   阅读722   评论0

很多时候我们需要Linux服务器定时去运行一个脚本来触发一个操作,比如写缓存数据到硬盘、定时备份、定时重启服务、定期清除日志等。下面就简单讲解一下Linux crontab命令如何实现自动循环执行shell脚本。

一、准备shell脚本

比如我们准备一个hello.sh

vim /hcn/sh/hello.sh


  1. #!/bin/bash  
  2. DATETIME=$(date "+%Y%m%d%H%M%S")  
  3. echo "hello,  www.hoscen.cn,时间:${DATETIME}"  

通过chmod命令赋予该脚本的执行权限chmod 755 hello.sh

测试正确性

二、开启crontab服务 

linux应该都有crontab,没有的话可以安装一下:

yum install  vixie-cron

yum install  crontabs

vixie-cron软件包是cron的主程序;

crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

  • service crond start //启动服务
  • service crond stop //关闭服务
  • service crond restart //重启服务
  • service crond reload //重新载入配置
  • service crond status  //查看crontab服务状态

三、配置任务

新增调度任务可用两种方法: 

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。 

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。 

crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务 

查看调度任务 

crontab -l //列出当前的所有调度任务 

crontab -l -u jp //列出用户jp的所有调度任务 

删除任务调度工作 

crontab -r //删除所有任务调度工作 

直接编辑 vim /etc/crontab ,默认的文件形式如下:

上图,我们新增任务执行hello.sh脚本,每隔2分钟执行一次。


 crontab 时间表示

第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)


时间特殊符号特殊符号含义

*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。


使用实例:

实例1:每1分钟执行一次command命令:

* * * * * command


实例2:每小时的第3和第15分钟执行

命令:

3,15 * * * * command


实例3:在上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 * * * command


实例4:每隔两天的上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 */2 * * command


实例5:每个星期一的上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 * * 1 command


实例6:每晚的21:30重启smb 

命令:

30 21 * * * /etc/init.d/smb restart


实例7:每月1、10、22日的4 : 45重启smb 

命令:

45 4 1,10,22 * * /etc/init.d/smb restart


实例8:每周六、周日的1 : 10重启smb

命令:

10 1 * * 6,0 /etc/init.d/smb restart


实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 

命令:

0,30 18-23 * * * /etc/init.d/smb restart


实例10:每星期六的晚上11 : 00 pm重启smb 

命令:

0 23 * * 6 /etc/init.d/smb restart


实例11:每一小时重启smb 

命令:

* */1 * * * /etc/init.d/smb restart


实例12:晚上11点到早上7点之间,每隔一小时重启smb 

命令:

* 23-7/1 * * * /etc/init.d/smb restart


实例13:每月的4号与每周一到周三的11点重启smb 

命令:

0 11 4 * mon-wed /etc/init.d/smb restart


实例14:一月一号的4点重启smb 

命令:

0 4 1 jan * /etc/init.d/smb restart


实例15:每小时执行/etc/cron.hourly目录内的脚本

命令:

01 * * * * root run-parts /etc/cron.hourly

说明:

run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了

四、查看效果

在上面的任务里面我们把日志打印打了hello.txt中,在这里可以看到日志,正好是相隔2分钟,说明自动循环执行成功了!

就此一个定时任务执行shell就完成了 。

对我有用,我要     转载  
文章分类: Linux基础  
所属标签: Linux   crontab   定时任务  
  • 0条评论
  • 只看作者
  • 按时间|按热度
  • 由于本人多次涉及需要打印这个证明,而每次都会忘记入口,在网上各种搜索各种摸索很是浪费时间。故本次将操作流程整理记录下来,以备忘。同时也分享给大家。1、打开湖北政务服务网,地址:http://zwfw.hubei.gov.cn/s/index.html2、切换区域到“武汉市”3、在“特色服务”模块找到“(个人)武汉市社会保险公共服务平台”4、进入“(个人)武汉市社会保险公共服务平台”,登录账号密码<imgsrc="https://cdnstatic.hoscen.cn/blog/article/184053017752895488/img/497065960be44747825acb86a17483c1.png"style=
  • 如何使用postman模拟http发送xml参数报文的POST请求?1、postman工具通过安装软件或使用谷歌插件都可以,这里不再赘述。2、配置postman,选择POST,填写URL;切换到Headers,添加Content-Type:text/xml 3、切换到body,选择raw,XML,下方填写你的请求报文4、点击Send发送请求,如图可以看到响应状态、时间、结果等信息5、讲到这里就结束了,是不是学会了?快去试试吧!
  • 本文讲触发el-dialog前动态修改窗口title的方法。1、el-dialog添加title属性el-dialog :title="titleType+'菜单'" :visible.sync="dialogVisible" width="800px" >el-dialog>  2、初始化变量(titleType,名称自己定义)export&
  • 很多时候我们需要Linux服务器定时去运行一个脚本来触发一个操作,比如写缓存数据到硬盘、定时备份、定时重启服务、定期清除日志等。下面就简单讲解一下Linuxcrontab命令如何实现自动循环执行shell脚本。一、准备shell脚本比如我们准备一个hello.shvim/hcn/sh/hello.sh#!/bin/bash  DATETIME=$(date"+%Y%m%d%H%M%S") echo"hello, www.hoscen.cn,时间:${DATETIME}"  通过chmod命令赋予该脚本的执行权限chmod755hello.sh测试正确性二、开启crontab服务 linux应该都有crontab,没有的话可以安装一下:yuminstall vixie-cronyuminstall crontabsvixie-cron软
  • 标题里面的三个术语,很容易混淆,专业人员有时也会用错。本文就用图片解释它们有何区别。容错容错(faulttolerance)指的是, 发生故障时,系统还能继续运行。飞机有四个引擎,如果一个引擎坏了,剩下三个引擎,还能继续飞,这就是"容错"。同样的,汽车的一个轮子扎破了,剩下三个轮子,也还是勉强能行驶。容错的目的是,发生故障时,系统的运行水平可能有所下降,但是依然可用,不会完全失败。高可用高可用(highavailability)指的是, 系统能够比正常时间更久地保持一定的运行水平。<imgsrc="https://cdnstatic.ho
  • 一般我们在使用CDN时都设置有缓存时间,当源站资源发生变更后,如果缓存时间没到,那么用户访问的依旧是变更前的数据,虽说又拍云控制台提供了缓存刷新功能界面,但是每次都手动去刷新显示不太理想,当然又拍云也想到了这一点,提供给我们有API可以调用。本篇文章就是讲解如何接入又拍云缓存刷新API。网站免费接入又拍云CDN的方法,请查看我另外一篇文章,地址: https://www.hoscen.cn/blog/hao/articles/204022774975430656.html又拍云API文档:https://api.upyun.com/doc#/api/guide/overview看完文档,我们会知道又拍云提供有两个缓存刷新接口,一个支持通配符(但次数有限),一个是完整url刷新。同时注意调用接口时将 Token 放入 HTTP Header 中 。那么我们需要3个接口:1、获取token2、URL刷新3、缓存批量刷新详细请求参数和响应值请查看文档。话不多说,我们直接放上核心代码1、获取token2、URL刷新<img src="https://cdnstatic.hoscen.cn/blog/article/
  • 数据结构绪论

    阅读数563
    1、数据结构起源早期计算机被理解为数值计算工具,但是我们还有一些非数值的计算,因此需要一些更科学有效的手段(比如表、树、图等数据结构)的帮助来处理问题。所以数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系和操作等相关问题的学科。2、基本概念和术语2.1 数据数据:是描述客观事物的符号,是计算机中可以操作的对象,是能够被计算机识别,并能输入给计算机处理的符号集合。数据不仅包括整型、实型等数值类型,还包括字符、声音、图像、视频等非数值类型。我们所说的数据,其实就是符号,但是这个符号需要满足两点:能输入到计算中能被计算机程序处理2.2 数据元素数据元素,也被称为记录。是组成数据的、具有一定意义的基本单位。比如,在人类中,人就是数据元素。在禽类中,猪狗牛羊等动物就是禽类的数据元素。2.3 数据项数据项:一个数据元素可以由若干个数据项组成。比如 人这个数据元素,就可以有眼、耳、鼻等数据项,也可以有姓名、年龄等数据项。具体有哪些数据项是视你所做的系统来决定。数据项是数据不可分割的最小单位。但注意真正讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。就像我们讨论一个电影,通常是讨论角色这个“数据元素”,而不是讨论角色的姓名、年龄这些“数据项”。2.4 数据对象数据对象:是性
  • 目录(Contents)教程介绍(新用户必看)IntelliJIDEA介绍本教程介绍安装、基础环境介绍(新用户必看)Windows下安装Ubuntu下安装Mac下安装安装环境总结首次运行向导安装后生成的目录说明、VM设置首次使用的基础设置介绍(新用户必看)UI界面UI主题、字体、编辑区主题、文件编码修改、乱码问题IntelliJIDEA特别地方(新用户必看)IntelliJIDEA搜索快的原因:索引IntelliJIDEA下Java文件编译方式IntelliJIDEA下项目相关特有概念说明必备的快捷键(新用户必看)IntelliJIDEA常用快捷键讲解(Win+Linux)IntelliJIDEA常用快捷键讲解(Mac)从Windows过度到Mac必备快捷键对照表最特殊的快捷键Alt+Enter介绍提高编码效率功能介绍Maven设置IntelliJIDEA配合Maven的一些要点版本控制讲解(SVN+Git)实时代码模板文件代码模板前端代码模板:Emmet特殊代码模板:PostfixCompletionDebug技巧重构技巧数据库管理工具远程调试介绍(Tomcat+Jetty)高级设置介绍IntelliJIDEA推荐设置(新人重点)IntelliJIDEA常用细节-1IntelliJI
  • 本文主要讲canonical标签的使用、canonical标签的作用、canonical标签SEO,在实践中如何正确规范的使用canonical标签。Canonical标签实际上就是一个页面内的301转向,可以帮助我们解决内容一样url不一样的网址规范化问题。和301跳转不同的是,用户并不被转向,但是对于搜索引擎来说,页面链接的权重是会被集中到代码中指明的规范化url上的。 图片来源:一灯出海对于经验丰富的SEO人员来说,canonical标签的使用一定不陌生,但最近在实践中发现不少网站的页面虽然用了canonical标签,但是使用方法却不规范。所以在这里和大家一起探讨一下canonical标签的规范使用方法,让更多的SEO人员避免走弯路。如果一个页面有多个url:https://www.hoscen.cn/blog/hao/articles/211896161185824768.htmlhttps://www.hoscen.cn/blog/hao/articles/211896161185824768/view这些url的页面内容完全一样,而我们想优化的规范化url为<ahref="https://www.hoscen.cn/blog/ha
  • 1. 两数之和

    阅读数557
    总结:1、解决方法通常我们最容易想到的是暴力枚举(双重for循环),时间复杂度O(N^2),空间复杂度O(1),其中N是数组中的元素数量 2、利用哈希表可以以空间换时间,时间复杂度O(N),空间复杂度O(N),其中N是数组中的元素数量 题目给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]答案第一版:暴力枚举,时间复杂度高public int[] twoSum(int[]nums, int target){   int len=nums.length;