我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)

我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)


本文链接:http://codingstandards.iteye.com/blog/1140475   (转载请注明出处)

 

用途说明

crontab命令用于设置例行任务,类似于Windows中的任务计划。我们常用它来设置如下定时执行的任务:

  • 进行时间同步:ntpdate
  • 进行数据统计:mysql, sqlplus
  • 检查磁盘空间:df
  • 监控CPU使用:vmstat
  • 检查某些程序是否还在运行,重新启动:ps, service xxx start
  • 杀掉某些运行时间过长的进程:kill
  • 定时发送邮件:mail
  • 清理日志:find & rm
  • 清除数据库中的历史记录:delete from xxx where date <= n days before
  • 备份数据库:mysqldump
  • 自动系统更新:yum
  • ...

 

常用参数

格式:crontab -l

参数小写L,用于显示crontab中设置的任务情况。

 

格式:crontab -e

使用文本编辑器(通常是vi)编辑任务列表。

 

任务格式要点如下:

以#号开头的行是注释:但是与shell脚本不同的是,注释只能单独写在一行,不能与任务或环境变量设置写在同一行。

空行将被忽略;

环境变量设置:name = value,与shell脚本不同的是:等号前后可以加空格。

任务由六部分组成:小时 分钟 日期 月份 星期 程序及参数

前面五个部分用来设置任务执行的频次:

可以设置为*,比如分钟设置为*是表示每分钟;

也可以设置为具体的数值,比如小时设置为9表示9点的时候;

还可以设置多个数值,以逗号分隔,比如日期设置为5,15,25表示匹配这三个日期之一;

但是有一点要切记:前面四项的关系之间为and的关系,即需要同时满足;但星期那一项与前面月份日期是or的关系(被人称之为“冲突的逻辑”)。

 

任务的六个组成部分:

1)分(0-59)
2)时(0-23)
3)日(1-31)
4)月(1-23,或者英文名)
5)周(0-7,或者英文名,0和7均表示周日)
6)要执行的内容:包括程序名称和参数,但要注意%的使用,后面有讲到。

 

关于前五段:时间和日期
1)表示任意:* 号表示 “任意”(first-last)。
2)指定数字,表示指定的时间。
3)指定段,表示“开始-结束”内包含的数:比如3-6,表示3,4,5,6
4)指定列表:比如 “1,2,3,4″,”0-4,8-12″
5)指定“步长”:8-14/2 表示8,10,12,14

 

关于百分号%

%意味着命令行的结束。%后面的内容将被当做命令的标准输入,同时%又相当于换行。

man 5 crontab 写道
The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the
line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL vari-
able of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed
into newline characters, and all data after the first % will be sent to the command as standard input.

 

“%”在crontab文件中,有“结束命令行”、“换行”、“重定向”的作用,比如:
0 22 * * 1-5 mail -s “It’s 10:00 pm” joe%Joe,%%Where are your kids?%
将会在周一至周五的22:00发送一分内容为:
Joe,<换行>

<换行>

Where are your kids?<换行>

如果在命令行中确实需要%,比如date命令中指定日期时间的输出格式,那么就需要加上\进行转义。

0 4 * * *  /opt/cron/mysql_dump.sh ? ?> /srv/logs/`date +\%y-\%m-\%d`.dump.log

 

关于crontab的帮助:

man crontab      命令行的帮助

man 5 crontab   任务定义格式

 

crontab手册页中的示例 (EXAMPLE CRON FILE)

man 5 crontab 写道
# use /bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh
# mail any output to ‘paul’, no matter whose crontab this is
MAILTO=paul
#
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 2:15pm on the first of every month -- output mailed to paul
15 14 1 * * $HOME/bin/monthly
# run at 10 pm on weekdays, annoy Joe
0 22 * * 1-5 mail -s "It’s 10pm" joe%Joe,%%Where are your kids?%
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
5 4 * * sun echo "run at 5 after 4 every sunday"
 

 

符号@开头的特殊时间 ,比如 @reboot表示启动之后执行一次。

man 5 crontab 写道
These special time specification "nicknames" are supported, which replace the 5 initial time and date fields,
and are prefixed by the ’@’ character:
@reboot : Run once, at startup.
@yearly : Run once a year, ie. "0 0 1 1 *".
@annually : Run once a year, ie. "0 0 1 1 *".
@monthly : Run once a month, ie. "0 0 1 * *".
@weekly : Run once a week, ie. "0 0 * * 0".
@daily : Run once a day, ie. "0 0 * * *".
@hourly : Run once an hour, ie. "0 * * * *".

 

用于crontab的shell脚本编写注意事项:

1)执行位置:最好在前面加上 cd $(dirname $0) || exit 1   表示更改当前工作目录到脚本所在目录

2)环境变量:最好在前面加上 . /etc/profile    表示将/etc/profile设置的环境变量引入

脚本样本如下所示:

#!/bin/sh

cd $(dirname $0) || exit 1

. /etc/profile

# 剩下的代码

 

要使crontab设置的任务有效的执行,必须确保crond服务在运行。

[root@smsgw mhr_server]# service crond
Usage: /etc/init.d/crond {start|stop|status|reload|restart|condrestart}
[root@smsgw mhr_server]# service crond status
crond (pid 28553 28543 28337 28328 27900 14497 1865) is running...
[root@smsgw mhr_server]#

如果不在运行,可以执行下面的命令启动:

service crond start

如果要确保系统重启之后该服务自动执行,可以执行如下命令:

chkconfig crond on

 

使用示例

示例一 显示crontab设置的任务

[root@web ~]# crontab -l

# 2010.06.30 Tomcat监控
* * * * * mj.sh /opt/apache/apache-tomcat-6.0.26/bin tomcat './startup.sh'

# 2010.07.21 邮件代理服务器
* * * * * mj.sh /opt/omc08/src/ems_proxy ems_proxy 'make start'

[root@web ~]#

 

示例二 日期和星期同时设置

错误示例:每月6到12号中的星期天的4点正,执行备份脚本。做了如下crontab项。
0 4 6-12 * 0 /root/work190/mhr_server/backup_workplace_sent.sh
在crontab里面如果日期与星期同时设置,是“或”的关系,也就是说上面的设置的含义是每月的6到12号或者星期天,这些日子的4点执行备份脚本。

怎么样才能实现这个需求呢?没办法,只能在脚本中进行判断。

 

示例三 定时关机

为了节约用电,在每天下班之后最好关闭开发服务器,如果忘记了的话,就可以叫crontab帮忙啦。

30 18 * * * poweroff

 

问题思考

相关资料

【1】Michael的专栏  Linux下crontab命令的用法
http://blog.youkuaiyun.com/sipsir/article/details/3973713
【2】新浪科技时代  Linux系统利用Crontab命令实现定时重启
http://tech.sina.com.cn/s/2008-03-13/08232074826.shtml
【3】爱工作,爱生活  Linux定时执行程序--Crontab
http://gavin-chen.iteye.com/blog/257846
【4】THE GEEK STUFF  Linux Crontab: 15 Awesome Cron Job Examples
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

 

 

 

返回 我使用过的Linux命令系列总目录

 

crontab设置定时任务(设置周期性被执行的指令工具、crontab语法、Crontab实操设置、与windows计划任务的区别) 在大多数系统中,这个文件通常被命名为"crontab",但是也可能会有一些系统使用其他名称,例如在Solaris系统中,这个文件被称为"cron.d"。它的语法由6个字段组成,分别代表分钟、小时、日期、月份、星期和要执行的命令。使用crontab命令可以很方便地设置定时任务,它可以帮助用户在特定时间或按照一定的时间间隔自动执行一些任务,例如系统维护、邮件处理、日志分析等。总的来说,虽然两者都是用来设置周期性任务的工具,但是在使用和功能上存在一些差异,需要根据具体的需求和操作系统来选择使用哪种工具。 阅读详情

相关推荐

FPGA—ZYNQ_BD Block Design学习(一)

1.第一步:打开Vivado软件,创建或打开一个工程。2.第二步:在Block Design中添加arm核心,并将其配置为IP核。3.第三步:配置arm核心的外设信息,如DDR接口、时钟频率、UART接口等。4.第四步:完成Block Design中的模块互联,生成PL端的比特流。 5.第五步:导出PS端的硬件信息,包括arm IP核的外设、速度、引脚和地址等信息。1创建bd 需要有ddr以及uart和时钟配置外设io口,这里就是zynq的管脚规定好的,根据原理图用哪个个勾选哪一个。 对外设uart的配

m0_58129662的博客 1028

Linux定时任务Crontab命令详解

参考链接:https://www.cnblogs.com/shamo89/p/10160946.html 一、crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则......

大宇进阶之路的博客 1万+

开源DIY龙门架:从零构建可编程运动控制平台

运动控制是自动化与机器人技术的核心基础,它通过精确指令驱动执行机构,实现物体的定位与轨迹规划。其原理通常涉及控制器、驱动器、电机与传动机构的协同工作,核心价值在于将数字指令转化为精准的物理运动,从而解放人力并提升作业一致性。在工业自动化、桌面制造(如3D打印、激光雕刻)及教育机器人等领域应用广泛。本文聚焦于一个具体的工程实践案例:使用**铝型材**、**3D打印**零件、Arduino控制器及步进电机,从机械结构设计、电路连接到代码编写,手把手教你打造一个模块化、可扩展的开源龙门架系统。该系统不仅成本可控,

weixin_33168937的博客 620

linux命令学习-crontab命令

上一篇at命令学习了其是一个定时任务,但是只会执行一次,本次要学习的是循环执行例行任务的命令crontab命令。linux命令学习-crontab命令与at的命令类似的有一个进程atd去检查并执行at定时任务,crontab也有一个进程对定时任务进行执行crond;

qq_40840571的博客 5792

Python实战:5分钟搞定固定翼无人机三自由度仿真(附完整代码)

本文提供了一个基于Python的固定翼无人机三自由度仿真快速实现方案。通过面向对象设计,封装了核心运动学模型,并对比了欧拉法与龙格-库塔法两种积分方法。文章附有完整实例代码,帮助算法工程师和研究人员在5分钟内搭建轻量级仿真环境,用于快速验证控制律、路径规划等核心算法逻辑。

docker7nomad的博客 749

Verilog的综合指令

Synopsys综合指令

烟花一时的博客 5447

Linux crontab命令详解

crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟日志文件: ll /var/log/cron*编辑文件: vim /etc/crontab进程:ps -ef | grep crond ==> /etc/init.d/crond restart作用:定时备份,实时备份。

Chocolate的博客 3500

Auto.js凉了之后,我们该用啥?AutoX.js保姆级环境搭建与第一个脚本实战(2024最新)

本文详细介绍了AutoX.js作为Auto.js替代方案的环境搭建与脚本开发实战指南。从技术生态现状分析到2024最新环境配置,再到编写第一个实用脚本和进阶调试技巧,帮助开发者无缝迁移至AutoX.js平台。特别适合需要手机自动化的JavaScript开发者,涵盖从基础到企业级应用的全套解决方案。

weixin_28737073的博客 390

Crontab命令详解

crontab命令是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行。crontab命令可以精确到分(精确到秒的一般写脚本),相当于闹钟。如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通过Crontab这 工业级程序去调度就行了。

Ruishine的博客 2万+

浅谈Android MVI架构---大自然的搬运工~~~

浅谈 Android MVI架构

hong_world的博客 2155

5个免费股票数据API实测对比:从AkShare到BaoStock,哪个最适合你的AI量化项目?

本文深度评测了AkShare、BaoStock、yfinance、Alpha Vantage和EOD Historical Data这五个免费股票数据API,从数据质量、覆盖范围、更新频率、稳定性及易用性进行对比。针对AI量化项目,文章提供了详细的选型策略,帮助开发者根据项目阶段与需求,精准选择最适合的数据源,并强调了多源验证与数据清洗的重要性。

weixin_29290947的博客 5089

Linux指令——crontab

crontab指令安装和具体使用

weixin_61857742的博客 3931

configure: error: no acceptable C compiler found in $PATH解决方案

本文主要介绍了configure: error: no acceptable C compiler found in $PATH解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 4万+

linux命令之crontab详解

crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

全栈行动派的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Linux系统之计划任务crontab的基本使用

Linux系统之计划任务crontab的基本使用

jks212454的博客 842

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux中的计划任务

计划任务是指让系统在指定的时间点自动执行特定命令或脚本的功能。它的主要作用是:自动执行重复性工作,无需人工干预在系统负载较低时执行资源密集型任务确保关键维护任务按计划执行实现系统的自动化管理# 简单来说,计划任务就是:在指定的时间执行指定的操作!计划任务就像是给计算机设置的"闹钟",到了指定时间,计算机就会自动执行你安排的工作。

lsh0411的博客 1515

linux 定时任务(crontab)

简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务 命令格式 命令格式:crontab [-u username] [-l|-e|-r] 参数: -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度; -e: 编辑crontab 的工作内容;

司马懿的西山居 8869

Linux之计划任务服务crontab

Linux之计划任务服务crontabLinux中的计划任务:crontabWindows中计划任务Linux中的计划任务crontab -e命令:计划任务的编辑计划任务权限 Linux中的计划任务:crontab 什么是计划任务:操作系统不可能24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动httpd=>阿帕奇),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。(在指定的时间执行指定的操作) Windows中计划任务

锦衣 551

windows 配置 crontab 自动化

# Crontab 的功能是什么 Crontab 是 Linux 的一个计划任务管理工具,你可以在那上面添加一些任务,在指定的时间让它在后台运行,经常用来定时清除系统或程序的缓存,可以定时执行任意的脚本等等,这些功能在 Linux 上都是非常有用的,尤其是当 Linux 做为服务器来用时。 #为什么 Windows 上没有一个呢 已经有人做了,像python版的pycron和 P...

GLOBE TREKKER 1万+

linuxOPS基础_linux计划任务

作用:操作系统不可能24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动httpd=>阿帕奇),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。计划任务就是在指定的时间执行指定的操作!

JiuMeilove的博客 4万+

Linux————计划任务

计划任务,就是有计划的任务,就是按照我们的的计划自动执行任务计划任务有一次性计划任务和周期性计划任务。

m0_53733914的博客 1321

linux 定时任务星期六,Linux定时任务Crontab

一、crontab简介crontab 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crontab进程,crontab进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。(1):系统任务调度:系...

weixin_34315264的博客 3533

linux记录crontab任务,linux计划任务crontab

13.1 例行性命令概述例行性命令相当于windows中的计划任务,是按照固定的规律与时间执行一些常规的操作,比如定时关闭服务器与发送电子邮件,并且是在后台进行操作。13.1.1 例行性命令的种类1. at 仅执行一次的,主要做一些突发的事件。2. cron工作将持续做下去,周期性的事件。13.1.2 常见的例行性命令1. 登陆日志的数据轮换。2. rpm数据库的建立。3. 建立loca...

weixin_33073525的博客 140

crontab 定时任务

minute hour day month week command 顺序:分 时 日 月 周 ●minute: 表示分钟,可以是从0到59之间的任何整数。 ●hour:表示小时,可以是从0到23之间的任何整数。 ●day:表示日期,可以是从1到31之间的任何整数。 ●month:表示月份,可以是从1到12之间的任何整数。 ●week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 ●command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 在以上各个字段中,还可以使

hemai123的博客 7948

linux添加定时计划任务,Linux定时任务怎么设置 crontab计划任务添加步骤

Crontab是一个Unix/Linux系统下的常用的定时执行工具,相当于windows的计划任务。执行servicecrondstart若提示未找到crond.service,则需要安装crontab。CentOS安装crontabyum -y install vixie-cron crontabs //安装Crontabchkconfig crond on //设为开机自启cron服务se...

weixin_36397372的博客 475

Linux任务计划管理

计划任务是指让系统在指定的时间点自动执行特定命令或脚本的功能。它的主要作用是:自动执行重复性工作,无需人工干预在系统负载较低时执行资源密集型任务确保关键维护任务按计划执行实现系统的自动化管理# 简单来说,计划任务就是:​在指定的时间执行指定的操作!计划任务就像是给计算机设置的"闹钟",到了指定时间,计算机就会自动执行你安排的工作。

yovo1的博客 847
上一篇: 我使用过的Linux命令之chmod - 改变文件/目录的访问权限
下一篇: 我使用过的Linux命令之ar - 创建静态库.a文件
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值