文档章节

关于crontab的用法

01010101010101010101
 01010101010101010101
发布于 2014/01/03 21:42
字数 1716
阅读 87
收藏 0

1:crontab不发邮件

linux crontab -e 任务执行后给root账户发送邮件
from: http://linux.chinaunix.net/techdoc/system/2008/09/13/1031740.shtml
我公司有一台linux mail服务器,用的是postfix+dapm+mysql+extmail等建立,因为extmail有mail图象日志分析功能,所以用crontab建立了自动执行计划。可是每当执行后,都会给root发邮件,因为root帐号不存在,造成很多postfix错误日志。
所以想关掉发邮件的功能,看了一下。
vi /etc/crontab  里面有一个参数:MAILTO=root,将这行注释掉,ok。
晕,上面的方法有点行不通,更正如下:
crontab -e 在执行后面加上   >/var/log/crontab.log 2>&1。/var/log/crontab.log,代表日志文件存放位置。或者改为/dev/null.

*/1 * * * * /usr/local/mailgraph_ext/queue_stat.sh >/dev/null 2>&1
#Linux


2:Unix/Linux 下如果手动执行脚本可以正常运行,而放在crontab里面就有问题的话

如题,那肯定是执行这个脚本需要用户环境变量,注意这里面的区别,在crontab里面执行的脚本并没有去执行所在用户的profile, 而你手动的执行的话,至少是执行了该用户的环境变量!
解决的办法就是在脚本开始的地方添加执行该用户的profile的命令,如下:
#!/bin/ksh
. $HOME/.profile

注意这里的"."和后面必须要有空格!

这里还有另外一种情况(在Linux下面):
#!/usr/bin/sh
......
对于这样的一个脚本,我们可能在命令行模式下直接./ 去执行它,并没有任何问题,但一旦放到crontab里面执行 就会发现报错,当然这个报错信息是很好确认问题在哪的,原因是/usr/bin/sh在Linux系统里面并不存在,
它是Solaris里面的路径,所以只需要把这个更改好就可以了,



=============================================

详细用法

基本格式 : 
*  *  *  *  *  command 
分 时 日 月 周 命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令 
crontab文件的一些例子: 
30 21 * * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每晚的21:30重启apache。 
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每月1、10、22日的4 : 45重启apache。 
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每周六、周日的1 : 10重启apache。 
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 
上面的例子表示每星期六的11 : 00 pm重启apache。 
* */1 * * * /usr/local/etc/rc.d/lighttpd restart 
每一小时重启apache 
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 
晚上11点到早上7点之间,每隔一小时重启apache 
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 
每月的4号与每周一到周三的11点重启apache 
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 
一月一号的4点重启apache 
名称 : crontab 
使用权限 : 所有使用者 
使用方式 : 
crontab file [-u user]-用指定的文件替代目前的crontab。 
crontab-[-u user]-用标准输入替代目前的crontab. 
crontab-1[user]-列出用户目前的crontab. 
crontab-e[user]-编辑用户目前的crontab. 
crontab-d[user]-删除用户目前的crontab. 
crontab-c dir- 指定crontab的目录。 
crontab文件的格式:M H D m d cmd. 
M: 分钟(0-59)。 
H:小时(0-23)。 
D:天(1-31)。 
m: 月(1-12)。 
d: 一星期内的天(0~6,0为星期天)。 
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量 
说明 : 
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 
user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设 
定自己的时程表。 
参数 : 
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数 
来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 
crontab -r : 删除目前的时程表 
crontab -l : 列出目前的时程表 
crontab file [-u user]-用指定的文件替代目前的crontab。 
时程表的格式如下 : 
f1 f2 f3 f4 f5 program 
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执 
行的程序。 
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推 
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 
例子 : 
#每天早上7点执行一次 /bin/ls : 
0 7 * * * /bin/ls 
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup : 
0 6-12/3 * 12 * /usr/bin/backup 
周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 
20 0-23/2 * * * echo "haha" 
注意 : 
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之 
后加上 > /dev/null 2>&1 即可 
例子2 : 
#每天早上6点10分 
10 6 * * * date 
#每两个小时 
0 */2 * * * date 
#晚上11点到早上8点之间每两个小时,早上8点 
0 23-7/2,8 * * * date 
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 11 4 * mon-wed date 
#1月份日早上4点 
0 4 1 jan * date 
范例 
$crontab -l 列出用户目前的crontab.

© 著作权归作者所有

共有 人打赏支持
01010101010101010101
粉丝 23
博文 93
码字总数 68915
作品 0
长宁
高级程序员
私信 提问
使用python的分布式任务队列huey实现任务的异步化

前言: 一个轻型的任务队列,功能和相关的broker没有celery强大,重在轻型,而且代码读起来也比较的简单。 这次算是原文的翻译了.... 一开始看到这个东西的时候,想看看有没有中文的资料,能立...

rfyiamcool
2014/09/08
0
0
crontab周期任务

crontab用法: crontab [-u user] file crontab [-u user] {-l|-r|-e} -l:显示crontab文件内容。 -e:利用vim编辑用户crontab文件。 -i:删除用户crontab文件前确认提示。 -r:从crontab目录中...

690337300
2014/09/16
0
0
定时自动启动任务crontab命令用法

每个操作系统都有它的自动定时启动程序的功能,Windows有它的任务计划,而Linux对应的功能是crontab。 crontab简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指...

呼噜呼噜睡翻天
2012/11/15
0
0
全局替换由crontab起的shell脚本中的某些字符串

遇到这样一个需求: 需要替换crontab起的shell脚本中的某个域名,但是不知道crontab中到底有多少的shell脚本包含被替换的域名,难道要手工去查找么?于是写了个脚本,并通用之 功能:替换cro...

彼得
2012/12/27
0
0
PHP点点滴滴 二(我抄来滴,非常简单的东西)

//Jquery JS 正确的比较两个数字大小的方法 if(2 > 10) { alert("不正确!"); } 此比较不会是想要的结果:它相当于2 >1,把10的第一位取出来比较。 解决方法: if(eval(2) > eval(10)) { ale...

JK_OPERA
2016/03/21
37
0

没有更多内容

加载失败,请刷新页面

加载更多

sed, awk 练习

1. sed打印某行到某行之间的内容 2. sed 转换大小写 将单词首字母转化大写 将所有小写转化大写 3. sed 在某一行最后面添加一个数字 4. 删除某行到最后一行 解析: {:a;N;$!ba;d} :a : 是...

Fc丶
今天
2
0
babel6升级到7,jest-babel报错:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

自从将前端环境更新到babel7,jest-babel之前是基于babel6的,执行时候就会报:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 很烦,因为连续帮好几台电脑修复这个问题,所以记...

曾建凯
今天
1
0
探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
今天
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部