当前位置: 首页 > news >正文

Linux周期性任务计划

一、周期性任务计划类型:


1、一次性的任务执行(at,batch )--不重要:


A、at:

     交互式:让用户在at>提示符下输入多个要执行的命令。


如:#at 10:02,进入at命令提示符,如下:

            #at > ls /usr/local

            #at > cat /etc/passwd


        #提交任务:ctrl+d

        #查看任务计划列表:at -l 

        #删除一个尚未执行作业的方法:at -d job_num或者atrm job_num


     批处理:将任务的各命令写入文件,由at进行调用,格式:at -f /path/to/at_job_file TIME

     如: #at -f at.txt 15:22 ,其中at.txt的内容如下:

       ls /usr/local

       cat /etc/passwd

      

     任务计划的执行结果:通过邮件的方式发送给任务提交者。可以通过mail命令查看邮件。


B、batch:与at不同,不能指定时间,它自动选择系统空闲时执行。




2、周期性的任务执行(crontab、anacron)--重要:


A、系统cron:通常定义在/etc/crontab中。比如,定时删除tmp目录下的文件。


#cat /etc/crontab,每行定义一个独立的任务,具体内容如下:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/


# 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


B、用户cron:通常定义在/var/spool/cron/UserName中。

  使用crontab命令实现用户cron:

-l :查看自己的cron任务列表

-e :通过EDITOR变量中定义的编辑器打开用户自己的cron配置。

如:#crontab -e,定义内容如下:

   */5 * * * * /bin/echo "hello cron" 

-r :移除用户的crontab

        如果是管理员:

-u UserName :为别的用户配置crontab任务。

 如:#crontab -e -u hadoop 为hadoop用户配置其任务。


   注意1:在cron中定义的要执行的命令,如果不适用类似/etc/crontab中的PATH,必须使用命令的绝对路径。

 */5 * * * * /bin/echo "hello cron" &>/dev/null

  

   注意2:如果crontab编辑文件中,如果有%,请转移\%或者用单引号,否则无法执行。


         0 */3 * * * /bin/touch ~/testfile_`date +\%Y-\%m-\%d`.txt


0 */3 * * * /bin/touch ~/testfile_`date +'\%Y-\%m-\%d'`.txt

   


   注意3:如果不想接收邮件,可以通过重定向或者MAILTO="" ,如果不想法建议用重定向。

  */5 * * * * /bin/echo "hello cron" &>/dev/null


     例:每天 6 9 12 点,查看一下当前系统关在的所有文件系统,并将查看的结果追加到/tmp/mounts.txt文件中。

      0 6,9,12 * * * /bin/mount >> /tmp/mounts.txt


   注意4:比每的那个单位小的一定要给具体的值,这个值有自己来定。

     例:每天每两小时取当前系统内存空间余量,并将其保存至/stats/memory.txt文件中。

        0 */2 * * * /bin/grep "^MemFree"/proc/meminfo >>  /stats/memory.txt


   注意5:实现秒级别的任务(因为任务的最小时间为分钟)

例:每10秒钟执行一次echo "hello cron"

 * * * * * for i in {0..4};do /bin/echo "hello cron "; sleep 10; done


C、时间表示法:

   a、每个时间位都应该使用其可用的有效范围内的值。

   b、某时间位上的*表示对应位的有效取值。

   c、-:连续的时间点,如30-35 7 * * * 每天的7点30-35分执行,每分钟执行一次。

   d、,:离散的时间点取值,如:5,15,25,35 * * * 每小时的5 15 25 35分钟执行一次。

   e、/#:在指定时间范围内,每隔#执行一次。如:0/20 * * * 每20分钟执行一次;3-55/3 * * * 在3-55分之间每三分钟执行一次。

   

D、anacron:是cron的一种补充,能够有效的去检查cron中某任务在过去某个周期内尚未执行的任务,

   在开机后某个时间点去尽快执行一次。这个执行的时间点是在/etc/anacrontab中定义的。

#cat /etc/anacrontab ,内容如下:

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22


#period in days   delay in minutes   job-identifier   command

15cron.dailynice run-parts /etc/cron.daily,某个周期内尚未执行的任务,在开机后5分钟执行

725cron.weeklynice run-parts /etc/cron.weekly,某个周期内尚未执行的任务,在开机后25分钟执行

@monthly 45cron.monthlynice run-parts /etc/cron.monthly,某个周期内尚未执行的任务,在开机后45分钟执行



二、mail命令:列出邮件列表。用quit退出邮件。


1、通过-s 指定主题subject,并将文件/path/to/somefile中的内容作为邮件内容,发送给userName。

#mail -s "Subject" userName < /path/to/somefile


2、通过-s 指定主题subject,发送给用户,并在>在输入邮件内容,通过ctrl+d提交邮件。

#mail -s "Subject" userName
















本文转自lzf0530377451CTO博客,原文链接: http://blog.51cto.com/8757576/1650322,如需转载请自行联系原作者



相关文章:

  • 我在Dell笔记本上安装Windows 7全过程
  • 设计模式.迪米特法则
  • 【图像处理】基于OpenCV底层实现的直方图匹配
  • javascript判断IPV6格式
  • 【sql】部门最高工资 Department Highest Salary
  • 用shell批量修改类似的文件名
  • 【★】交换层网关协议大总结!
  • 使用vRealize Operations for Horizon,做高效的虚拟桌面系统管理员
  • Tomcat6+JDK6如何加固,解决Logjam attack,
  • Word2007“由于文件许可权错误,Word无法完成保存操作”问题的解决方法
  • Centos压缩解压
  • Linux执行命令常见的英语语句
  • asn1编码格式的解析过程
  • top2
  • 远程连接服务器工具:sshpass
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • css布局,左右固定中间自适应实现
  • css的样式优先级
  • Electron入门介绍
  • ES10 特性的完整指南
  • HTTP中的ETag在移动客户端的应用
  • JS基础之数据类型、对象、原型、原型链、继承
  • Linux链接文件
  • Next.js之基础概念(二)
  • 从零开始的无人驾驶 1
  • 前端存储 - localStorage
  • 前端相关框架总和
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 小试R空间处理新库sf
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #HarmonyOS:Web组件的使用
  • (第二周)效能测试
  • (二)hibernate配置管理
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四) 虚拟摄像头vivi体验
  • (一)appium-desktop定位元素原理
  • (一)kafka实战——kafka源码编译启动
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)h264中avc和flv数据的解析
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)用.Net的File控件上传文件的解决方案
  • .NET 8.0 发布到 IIS
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net 验证控件和javaScript的冲突问题
  • .stream().map与.stream().flatMap的使用
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @我的前任是个极品 微博分析
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [asp.net core]project.json(2)
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)