首页 > 服务器 > Linux > Linux下自动化工具 cron jobs 的使用方法解析
2014
11-07

Linux下自动化工具 cron jobs 的使用方法解析

Cron jobs的简单使用

cron jobs 可以将任何的工作设定为定期自动化执行,如工作日志、备份、密码查核、硬盘空间查核等等, 设定且利用这些自动化的工作可以大幅降低系统管理者的日常工作,这些工作通常可以设定在半夜执行以避免在系统尖峰时刻与正常工作共抢系统资源。

############################
# crontab 使用
############################
$ export EDITOR=vi    # 设定 EDITOR 系统参数,在此请输入个人习惯使用的文字编辑器
$ crontab -e          # 编写个人 cron jobs table
                      # 此时 crontab 会利用 $EDITOR 这个系统参数,启动文字编辑器
*/1 * * * * date >> /tmp/date    # 此语法表示每一分钟执行 date 一次。
$ crontab -l          # 列出当前个人的 crontab 设定档
$ cat /tmp/date                            
$ cat /tmp/date       # 请等待一分钟后执行
$ rm /tmp/date 
$ cat /tmp/date

############################
# crontab 格式说明
############################
*  *  *  *  *     date >> /tmp/date
分 时 日 月 周      执行的命令

# 每个月的 15 号上午 10 点 30 分执行,语法为
30 10 15 * *    [执行行的命令]

# 星期日早上 3 点 5 分执行,语法为
5 3 * * 7       [执行的命令]

# 每五分钟执行一次,语法为
*/5 * * * *     [执行的命令]

以下摘取于 man 5 crontab 用来说明各档位允许的值
              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sun, or use names)

以下是我的系统自动执行date函数截图:

cronjobs-date

友情提示:如果执行不成功,可试着将/tmp/date改成当前用户可读写路径。

系統定期的 cron jobs

$ cat /etc/crontab 

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
25 6    * * *   root    test -e /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6    * * 7   root    test -e /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6    1 * *   root    test -e /usr/sbin/anacron || run-parts --report /etc/cron.monthly
#

############################
# /etc/crontab 说明
############################
# 25 6    * * * 每天早上六点 25 分,执行存放在 /etc/cron.daily 下安排的所有工作
# 47 6    * * 7 星期天早上六点 47 分,执行存放在 /etc/cron.weekly 下安排的所有工作
# 52 6    1 * * 每个月一号早上六点 52 分,执行存放在 /etc/cron.monthly 下安排的所有工作

您只要将您所编写好的 shell script 存放在 /etc/cron.daily 就可以达到每天定期执行的效果。 在此笔者提供一备份的 shell script 提供给读者参考。 你可以将他放置在 /etc/cron.weekly 这样就可每周定期执行备份工作:

$ edit /etc/cron.weekly/backup-utils

#!/bin/bash
SOURCE_DIR="/etc /var /home"    # 填入你想备份的目录
BACKUP_DIR="/backup"            # 填入你想备份到那个目录下,此处预设为 /backup
BACKUP_NAM="BACKUP-"            # 填入你想备份后的文档名前缀

DATE=$(date +%m%d)          
FILE_NAME="${BACKUP_DIR}/${BACKUP_NAM}${DATE}.tgz"

tar cvfz $FILE_NAME $SOURCE_DIR

$ chmod +x /etc/cron.weekly/backup-utils

编程技巧