linux定时任务crontab命令

在安装linux系统的时候,会自动安装crond服务,这个服务支持crontab命令
linux系统是由crond这个系统服务来控制的,
crond是用来周期性的执行某种任务或等待处理某些事件的一个守护进程,类试window的计划任务

查看crond的配置文件

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


前四行是用来配置crond任务运行的环境变量
第一行指定使用的shell
第二行指定了执行系统命令的路径
第三行指定了将执行信息发送给root使用的邮件,为空表示不发送
第四行指定了执行命令时使用的主目录


定义定时任务(创建crontab文件就是创建定时任务)

所有用户定义的crontab文件都被保存在 /var/spool/cron 目录中, 文件名与用户名一致

下面是与crontab有关的文件描述

/etc/cron.deny
该文件中所列用户是不允许使用crontab命令的

/etc/cron.allow 
该文件是允许使用crontab命令的用户

/var/spool/cron/
是所有用户crontab文件存放的目录,以用户名命名

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段都代表一项设置,它的格式共分为6个段,前5段是时间设定,第六段是要执行的命令段,格式如下:
minute hour day month week command

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
图片

上述字段中可以使用下面的特殊字符

*  :代表所有可能的值,比如month字段如果是星号,则表示在满足其他字段的情况下,每月都执行这个命令

, :可以用逗号指定一个列表范围 比如 "1,2,3,4,5",一般用来指定不连续的范围

- :使用中杠表示一个连续的范围,比如 "2-6"代表"2,3,4,5,6"

/:正斜线,可以用正斜线指定时间的间隔频率,
例如在hour字段设置"0-23/2"表示0-23这个时间段内(全天)每2小时执行一次
比如在day字段设置"*/2" 表示每2天执行一次这个命令

安装crontab命令

yum -y install crontabs

启动服务命令

/sbin/service crond start # 启动服务
/sbin/service crond stop # 关闭服务
/sbin/service crond restart # 重启服务
/sbin/service crond reload # 重新载入配置
/sbin/service crond restart # 重启服务
/sbin/service crond status # 启动服务

加入开机自动启动
chkconfig -level 35 crond on

crontab 命令

crontab [-u user ] file
crontab [-u user ] [-e| -l | -r ]

-u user 用来设定某个用户的crontab服务, root用户才能使用
file 命令文件的名字,表示将file作为crontab的任务列表文件并载入
-e 编辑某个用户的crontab文件,不指定用户,编辑当前用户的crontab文件
-l 显示某个用户的crontab文件,不指定,显示当前用户
-r 删除某个用户的crontab文件,不指定删除当前用户的crontab文件

1.指定系统编辑器
cd ~
vim .profile
输入
EDITOR=vim; export EDITOR

2.使用vim 创建一个cron 文件
比如 vim test
命令就是上面所说的6个字段
如果你指定了使用vim编辑文件
直接使用crontab -e 然后回车 ,就能编辑了
比如输入
*/1 * * * * echo "haha\r" >> /home/Desktop/1.1.txt
每分钟向 1.1.txt文件追加一句haha

使用实例: (注意,记得设置crontab的配置环境变量)
默认是shell环境,想要运行python,又不想修改环境变量,就使用python包的绝对路径
或者/usr/bin/下的python软连接,然后python文件的绝对路径

每1分钟执行一次command
* * * * * command


每小时的第3和第15分钟执行
3,15 * * * * command


在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command


每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command


每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command


每晚的21:30重启smb 
30 21 * * * /etc/init.d/smb restart


每晚21:30  执行python文件
30 21 * * *  python test.py


每月1、10、22日的4 : 45执行python文件
45 4 1,10,22 * * python test.py


每一小时执行一次
* */1 * * * python test.py

你可能感兴趣的:(linux定时任务crontab命令)