Linux下使用crontab添加定时任务

2013年11月14日

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。
通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
使用权限:
root用户和crontab文件的所有者
语法:

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]

 

参数:
-e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r [UserName]: 删除目前的时程表
-l [UserName]: 列出目前的时程表
-v [UserName]:列出用户cron作业的状态

 

时程表的格式如下:

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 的方式来设定时程表。
由于unix版本不一样,所以部分语法有差别,例如在hp unix aix 中设定间隔执行如果采用*/n 方式将出现语法错误,在这类unix中 ,

 
间隔执行只能以列举方式,详请见例子。
使用方法
用VI编辑一个文件 cronfile,然后在这个文件中输入格式良好的时程表。编辑完成后,保存并退出。[1]
在命令行输入

$: crontab cronfile

 

这样就将cronfile文件提交给cron进程,同时,新创建cronfile的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名。
有些文章说crontab设置可以使用它的命令参数来设置,但是不知道为什么,我使用crontab -e来设置却不起效果,也分别在执行任务里指定了root权限和当前用户权限,查看crond进程也是启动的,指定任务的shell脚本也没有错误,但就是不执行.后来换了个思路解决了.

#vi /etc/crontab
#ls /var/spool/cron/
#vi /var/spool/cron/root
#service crond restart
#chkconfig  --list crond

 

Linux 使用 crontab 添加 定时 任务

Linux下使用crontab添加定时任务


Linux 使用 crontab 添加 定时 任务

Linux下使用crontab添加定时任务


Linux 使用 crontab 添加 定时 任务

Linux下使用crontab添加定时任务


Linux 使用 crontab 添加 定时 任务

Linux下使用crontab添加定时任务


sicnature ---------------------------------------------------------------------
I P 地 址: 3.145.170.164
区 域 位 置: 美国
系 统 信 息: 美国
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://myzhenai.com.cn/post/1628.html

1 评论

  • 海南胡说 2015年03月4日在12:21 上午

    crontab能创建非常多的email进程和日志,解决方法如下

    解决方法:
    在crontab中第一行增加MAILTO=””发送为空

    如果cron有什么原因需要将命令结果发一封邮件,那么就要看MAILTO这部分了,如果给MAILTO赋值了,并且不是空,那么就会发给这个用户;
    如果是空,MAILTO=””,那就不发任何邮件。
    如果没有定义MAILTO,也就是说crontab里面没有写这一行,那么就发给这个crontab的用户

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注