Linux——crontab定时任务

1、crontab服务启停

执行如下命令需要系统root用户权限。

/etc/init.d/crond start			##启动服务
/etc/init.d/crond stop			##关闭服务
/etc/init.d/crond restart		##重启服务
/etc/init.d/crond reload		##重新加载配置

##若要设置crontab服务开机自启,在/etc/rc.d/rc.local文件末添加:

/sbin/service crond start
chkconfig --list crond			##查看crontab服务自启状态
chkconfig --level 35 crond on	##设置crontab服务开机自启

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。但chkconfig并不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。有关chkconfig命令的详细使用,可自行查阅相关资料。

2、crontab操作命令

crontab -l				##列出当前用户的crontab
crontab -e				##编辑当前用户的crontab
crontab -r				##删除当前用户的crontab
crontab -ri				##删除前进行prompt交互提示
##以上命令默认查询的是当前登录用户的crontab,对于root用户而言,也可查看指定用用的crontab
crontab -u ftp -l		##列出用户ftp的crontab
crontab -u ftp -e		##编辑用户ftp的crontab
crontab -u ftp -r		##删除用户ftp的crontab

3、crontab用法

3.1、crontab命令详解

  *     *    *    *       *        命令
minute hour day month dayofweek  command
  分	时   日    月      周        命令

说明:
    minute - 从0到59的整数
    hour - 从0到23的整数
    day - 从1到31的整数 (须指定月份的有效日期)
    month - 从1到12的整数 (可使用简写Jan、Feb等)
    dayofweek - 从0到7的整数,0或7用来描述周日 (可使用简写Sun、Mon等)
    command - 需要执行的命令(可以使命令、脚本)

3.2、crontab灵活的时间定义

在crontab中,有四种符号可供我们更好地进行任务定时:
    " , " (逗号):代表分隔时段,例 " 1,3,6,9 ";
    " - " (中杠) :代表一个范围,例 " 2-6 ";
    " / " (斜杠) :代表间隔频率,例 " 0-59/10 " ,表示每10分钟,等价于 " */10 ";
    " * " (星号):代表每一(分、时、天、月、周),相当于 " */1 " ;

echo "date +%Y-%m-%d,%H:%M:%S hello,crontab!" > myCrontab.txt

3.3、crontab配置文件

3.3.1、用户配置文件

    用户任务的配置文件存储在目录 **/var/spool/cron** 下。
    在使用命令 "**crontab -e**" 编辑定时任务并保存后,系统会在 **/var/spool/cron/** 目录下创建一个以当前用户名命名的文件,文件中的内容就是使用命令 "**crontab -e**" 编辑的任务。
    linux系统的cron服务每分钟轮询 **/var/spool/cron** 目录下的文件,根据crontab的配置执行任务。

3.3.2、系统配置文件

    系统任务的配置文件存储在目录 /etc/cron*** 下。
    在/etc目录下面存在 cron.hourly、cron.daily、cron.weekly、cron.monthly、cron.d 五个目录和 crontab、cron.deny 二个文件。
    cron.daily : 代表每天执行一次的job;
    cron.weekly : 代表每个星期执行一次的job;
    cron.monthly : 代表每月执行一次的job;
    cron.hourly : 代表每个小时执行一次的job;
    cron.d : 代表系统自动定期要做的job;
    crontab : 用于定义crontab环境变量及定义定时任务执行目录;
    cron.deny :用于指定禁止使用crontab功能的用户。
注意: 大多Linux上默认不存在 cron.allow 文件,但你也可以在此目录下创建它。

(1)/etc/crontab配置文件

**##查看 /etc/crontab 文件内容:**
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

crontab环境变量说明:

  • SHELL变量:指定系统使用的SHELL环境;
  • PATH变量:指定执行命令的路径。
  • MAILTO变量:指定crontab的输出以电子邮件的形式发给MAILTO定义的用户名。若MAILTO="",则不发送邮件。
  • HOME变量:指定执行命令或脚本的基目录。

(2)通过 /etc/crontab 配置文件也可定义定时任务

##在 /etc/crontab 中定义定时任务示例
30 */6 * * * root run-parts /etc/cron.hourly
30 */6 * * * root run-parts /etc/cron.daily
30 */6 * * * root run-parts /etc/cron.weekly
30 */6 * * * root run-parts /etc/cron.monthly

参数说明:

  • 分、时、日、月、周参数使用情况与普通crontab相同,不再赘述。
  • root : 表示以root用户来运行任务;
  • run-parts : 表示后面是一个文件夹,将会执行该文件夹下的所有脚本;

3.3.3、crontab权限控制文件

crontab服务允许管理员限制用户使用crontab定时任务:
  • 配置文件 /etc/cron.allow ,用于指定可以使用crontab任务的用户;
  • 配置文件 /etc/cron.deny ,用于指定禁止使用crontab任务的用户。

具体控制如下:

  • (1)如果/etc/cron.allow文件存在,只有文件中的用户可以使用crontab任务;
  • (2)如果/etc/cron.allow文件不存在,查看/etc/cron.deny文件,只有文件中定义的用户不能使用crontab任务;
  • (3)如果2个文件都不存在,则只有root可以使用crontab任务;
  • (4)如果2个文件都存在,且都为空,则所有用户都不能使用crontab任务。

3.4、crontab日志路径

    文件 /var/log/cronYYYYmmdd,
    文件 /var/log/cron。
    用于记录是否执行过计划的脚本,linux会将执行的结果信息邮件发送到对应用的目录下 /var/spool/mail/root (此处以root用户为例)。

3.5、crontab定时任务示例

##每天23:30执行backup.sh脚本
30 23 * * * /custom/bin/backup.sh
##每周末晚20:00-23:00期间,每10分钟执行clearDate.sh脚本
*/10 [20-23] * * 0  /custom/bin/clearDate.sh
#每月1号0点0分定时备份crontab任务
0 0 1 [1-12] * * crontab -l > $HOME/mycron

3.6、crontab使用小结

 (1)新增定时任务后,要配上详细的频率注释、功能说明、时间、作者等信息;
 (2)时间频率上 日 和 周 不要同时使用,会引起冲突;
 (3)时间频率上,如果 时 有值,分钟 也要有值;
 (4)定时任务中使用百分号 % 时,需要加转义字符 \ ;
 (5)推荐将命令封装在脚本中,任务中执行脚本,而不是命令;
 (6)执行的脚本最好是绝对路径,脚本执行使用/bin/sh;
 (7)输出日志,可输出到>/dev/null 2>&1 或 >>到指定文件,但别同时使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值