- 浏览: 4752275 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
我使用过的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
关于百分号%
%意味着命令行的结束。%后面的内容将被当做命令的标准输入,同时%又相当于换行。
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)
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表示启动之后执行一次。
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.csdn.net/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用tar归档压缩文件时忽略某些文件和目录
2013-02-01 10:19 17046在Linux下,常用tar对文 ... -
使用nmap扫描服务器端口的一次操作
2012-11-01 17:00 15135使用nmap扫描服务器端口的一次操作 本文来自:http ... -
我使用过的Linux命令之wget - ooo
2011-09-14 13:10 0我使用过的Linux命令之wg ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:53 9144简明 Vim 练级攻略 http://coolshell.c ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:49 1简明 Vim 练级攻略 http://coolshell.c ... -
我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
2011-08-29 13:18 12094我使用过的Linux命令之: ... -
我使用过的Linux命令之date - 显示、修改系统日期时间
2011-08-25 09:21 41976我使用过的Linux命令之da ... -
我使用过的Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)
2011-08-16 09:22 21823我使用过的Linux命令之declare - 声明shell变 ... -
我使用过的Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
2011-08-11 09:31 28815我使用过的Linux命令之alias - 设置命令的别名,让 ... -
我使用过的Linux命令之ar - 创建静态库.a文件
2011-08-08 10:40 51927我使用过的Linux命令之ar - 创建静态库.a文件 本 ... -
我使用过的Linux命令之chmod - 改变文件/目录的访问权限
2011-08-03 21:33 10700我使用过的Linux命令之chmod - 改变文件/目录的访问 ... -
我使用过的Linux命令之export - 设置或显示环境变量
2011-08-02 19:55 25436我使用过的Linux命令之export - 设置或显示环境变量 ... -
我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
2011-07-26 10:50 29005我使用过的Linux命令之wc - 统计文件行数、单词数或字节 ... -
我使用过的Linux命令之groupdel - 删除群组
2011-07-22 22:13 9684我使用过的Linux命令之gr ... -
我使用过的Linux命令之ifconfig - 网络配置命令
2011-07-21 20:43 60526我使用过的Linux命令之ifconfig - 网络配置命令 ... -
我使用过的Linux命令之ll - 列出文件/目录的详细信息
2011-07-20 21:22 7203我使用过的Linux命令之ll ... -
我使用过的Linux命令之mkdir - 创建目录
2011-07-20 20:58 13680我使用过的Linux命令之mkdir - 创建目录 本文链 ... -
我使用过的Linux命令之perror - 解释错误代码
2011-07-18 20:29 25074我使用过的Linux命令之perror - 解释错误代码 ... -
我使用过的Linux命令之ping - 测试与目标主机的连通性
2011-07-16 10:46 26600我使用过的Linux命令之ping - 测试与目标主机的连通性 ... -
我使用过的Linux命令之route - 显示和操作IP路由表
2011-07-15 15:25 35254我使用过的Linux命令之route - 显示和操作IP路由表 ...
相关推荐
当我们在 Linux 系统中使用 crontab 执行 jar 文件时,输出结果中出现中文乱码的原因是由于 Unix/Linux 下的 crontab 环境与用户环境的差异。通常情况下,用户环境中会设置一些环境变量,例如语言环境变量 LANG,...
Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。...
在 Linux 中使用 crontab 自动清除日志的方法是通过编写一个 shell 命令,然后在 cron 中编写定时任务。例如,以下是一个删除 30 天前的日志文件的 shell 命令: find /opt/soft/log/ -mtime +30 -name "*.log" -...
Crontab是Linux系统中用于调度周期性任务的命令,它可以按照设定的时间间隔运行指定的脚本或程序。Crontab配置文件包含一系列规则,每条规则定义了一个任务的执行时间及要执行的命令。 三、配置ThinkPHP 5.1的...
使用 crontab -l 命令可以列出当前用户的所有计划任务,使用 crontab -l -u user 命令可以列出指定用户的所有计划任务。 Cron.allow 和 Cron.deny 文件 Cron.allow 和 Cron.deny 文件用于控制哪些用户可以使用 ...
linux 配置定时任务, crontab -e 编辑的文本,用户任务定时器配置,目录位置在 /var/spool/cron中的root文件中
Linux 系统计划任务 crontab 命令简单介绍 Linux 系统计划任务 crontab 命令简单介绍 Linux 计划任务 cron 是一个定时模式,例如我们可以在系统使用最少时对系统进行备份,但是管理员不可能在半夜来到公司工作,...
在Linux系统管理中,计划任务服务是不可或缺的一部分,它允许系统在特定时间自动执行一系列任务,从而极大地提高了运维效率。本文主要介绍了两个常用的计划任务工具:at和crontab。 首先,at命令适用于一次性计划...
### Linux定时任务命令之crontab #### Crontab简介 Crontab是Linux系统中一个非常重要的工具,用于在固定时间周期性地执行特定任务。通过crontab,管理员和用户可以设置脚本或命令在指定的时间自动执行,极大地...
Linux系统计划任务crontab命令是Linux操作系统中的一种常用工具,用于实现自动化任务调度。crontab命令可以让用户设定在某个特定时间执行某个命令或脚本,从而实现自动化任务的执行。 crontab命令的基本使用方法: ...
`crontab`是Unix/Linux系统中用于设置周期性被执行任务的命令,它允许用户根据预定义的时间间隔安排任务。在MACOSX上,虽然它不是内置的,但可以通过安装来实现。`crontab-46.1.tar.gz`是一个压缩包文件,包含了源...
Linux 中的定时器命令--crontab crontab 是 Linux 中的一个定时器命令,允许用户在固定时间或固定间隔执行程序。它类似于用户的时程表,能够让用户在特定的时间执行特定的程序。 使用权限:所有用户都可以使用 ...
在Linux系统中,Crontab(也称为cron table)是一个非常重要的工具,用于安排周期性的任务,例如定期备份、日志清理、系统维护等。在Linux CentOS 7(C7)环境中,通常使用RPM(Red Hat Package Manager)包管理系统...
【在Windows下配置crontab】的知识点主要集中在如何在Windows环境中使用Cygwin来实现类似于Linux中的计划任务管理。Crontab是Linux和Unix系统中用于管理周期性任务的工具,而在Windows系统中,由于Dos Scripts的功能...
总结来说,Linux上配置计划任务涉及到多个方面,包括对cron定时任务格式的理解,对crontab命令的熟练使用,对计划任务执行环境的配置,以及对任务执行结果的监控和记录。通过对这些知识点的掌握,可以有效管理Linux...
Linux 操作系统中,Crontab 是一个非常强大且灵活的计划任务工具,它可以让用户在指定的时间点执行指定的命令或脚本。在 PHP 中,我们可以使用 Crontab 来实现计划任务,例如定时发送内容、执行 PHP 脚本等。下面...
在Linux系统中,`crontab` 是一个强大的任务调度工具,用于自动化周期性的系统或用户任务。然而,有时我们可能会遇到这样的问题:在终端中能够正常运行的shell脚本(`.sh` 文件),在通过`crontab` 安排时却无法执行...
在Linux系统中,Cron服务是一种用于计划执行任务的工具。它允许用户设置周期性运行的任务,例如自动备份数据、定时发送邮件等。Cron服务的核心是`crontab`命令,通过这个命令用户可以编辑、查看或删除自己的Cron作业...
**Crontab计划任务的使用方法** Crontab(cron table)是Unix和类Unix操作系统中的一种调度服务,用于设置周期性执行的任务。它的工作原理是通过守护进程`crond`来激活定时任务,这些任务被称为cron jobs。下面将...
### Linux计划任务Cron详解及应用 #### 一、Cron简介 Cron是Linux系统中用于调度周期性任务的守护进程(Daemon),允许用户在固定时间或周期性地执行命令或脚本。通过Cron,用户可以设定复杂的定时任务,如定期...