crontab的设置与应用

  crontab的功能是以一定的时间间隔调度一些命令的执行。用于设置在特定的时间执行特定的功能,是linux系统管理员常用的工具之一。

  在系统中有两个地方可以存储用户设置的命令。

  一个在/etc目录之下,有一个名为crontab的文件,利用vim crontab可以在crontab中加入设置的命令。

  另一个在/var/spool/cron目录之下,有以用户名命名的文件,利用crontab -u user -e可以在以自己命令的文件中加入设置的命令,例如crontab -u liyang -e就可以在

  /var/spool/cron/liyang中添加针对liyang的命令。

  由此可见,/etc/crontab针对的是系统级,即针对整个系统设置定时执行的命令。/var/spool/cron/user针对的是用户级,即针对某个特定用户设置定时执行的命令。

  一般linux系统管理员只需在/etc/crontab下设置定时命令即可。

  linux设置了/etc/cron.allow和/etc/cron.deny两个文件来控制crontab的使用。/etc/cron.allow记录了哪些用户可以使用crontab,/etc/cron.deny则记录了哪些用户不可以使用crontab。如果两个文件同时存在,只有/etc/cron.allow起作用。如果都不存在,则只有root可以使用crontab。

  下面是一个未加入任何命令的/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

  可以看出,crontab中的语句格式为

    *  *  *  *  *  用户名  可执行命令

  五个”*“分别表示“分钟”、“小时”、“日期”、“月份”、“星期”,取值分别为“0~59”、“0~23“、”1~31“、”1~12“、”0~6“。

  接下来举个例子来使用crontab。

  先写一个脚本,脚本的功能是将/root下的文件进行打包压缩且以系统时间命名,压缩文件存放在/root/backup目录下。脚本如下

  1 #! /bin/bash
  2 
  3 if [ ! -d "/root/backup" ];then
  4     mkdir /root/backup
  5 fi
  6 
  7 cd /root/backup
  8 
  9 Year=$(date +%y)
 10 Month=$(date +%m)
 11 Day=$(date +%d)
 12 Hour=$(date +%H)
 13 Minute=$(date +%M)
 14 Second=$(date +%S)
 15 
 16 FILENAME=$Year$Month$Day$Hour$Minute$Second.tar.gz
 17 
 18 tar -zcvf $FILENAME /root/*

   接下来在/etc/crontab文件中添加任务,修改后的文件为

  1 SHELL=/bin/bash
  2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3 MAILTO=root
  4 HOME=/
  5 
  6 # For details see man 4 crontabs
  7 
  8 # Example of job definition:
  9 # .---------------- minute (0 - 59)
 10 # |  .------------- hour (0 - 23)
 11 # |  |  .---------- day of month (1 - 31)
 12 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 13 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 14 # |  |  |  |  |
 15 # *  *  *  *  * user-name command to be executed
 16 
 17 */20 * * * * root /root/backup.sh

   注意17行的语句,它表明每隔20分钟执行一次/root/backup.sh脚本。


   最后在/root/backup目录下发现备份的文件,crontab生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值