crond 是 Linux 系统周期性执行任务的守护进程,和 windows 的计划任务类似。crond 默认会随系统安装,启动系统的同时也会启动 crond。
新建 crontab 文件
每个用户都是独立的 crontab 文件,root 用户的文件是 /etc/crontab,普通用户默认没有创建 crontab。
修改 crontab 文件
$ crontab -e
普通用户首次运行这个命令会提示没有 crontab,将会使用一个空白的 crontab,根据提示选择编辑器修改 crontab 文件,这里选的是 3,vim.tiny,后续默认都会使用 vim.tiny 打开当前用户的 crontab 文件。
crontab 文件内容:
用法的介绍
任务格式:
minute hour day month week command
含义:
minute: 分钟,0-59 范围内的整数;
hour: 小时,0-23 范围内的整数;
day: 日期,1-31 范围内的整数;
month: 月份,1-12 范围内的整数;
week: 星期,0-7 范围内的整数,0 和 7 表示星期日;
command: 命令,可以是系统命令或者自己写的脚本、程序等;
字段中还可以加入特殊字符:
星号(*):所有可能的值,如 minute 字段填星号,表示每分钟执行一次;
逗号(,):指定一个列表,如 minute 字段填 "1,5,9" ,表示 01分、05分和 09分分别会执行一次;
横杠(-):指定一个范围,如 minute 字段填 "12-15" ,等同 "12,13,14,15";
正斜杠(/):指定时间的间隔频率,如 minute 字段填 "*/5" ,表示每5分钟执行一次;
栗子:
05 01 * * 1-5/2 /bin/bash /home/lk/backup.sh
表示周一到周五,每隔两天的凌晨一点零五分使用 bash 执行一次 /home/lk/backup.sh 脚本
添加完任务好保存文件退出就可以生效了。
注意事项:
crontab 默认不会加载任何环境变量,如上面的栗子,如果命令改成 bash /home/lk/backup.sh ,会报错找不到 bash,
所以加载环境变量的话要自己设置。
在 crontab 文件前面加上
PATH=/sbin:/bin/:/usr/bin:/usr/sbin
就可以使用 bash /home/lk/backup.sh 了。
一些软件特殊需要的环境建议使用脚本来配置,crontab 只要运行脚本就可以了,这样 crontab 的环境不会乱,减少冲突。
crontab 命令使用
可以使用 crontab 命令管理 crond
参数:
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
file:crontab 文件,缺省时默认是当前用户的 crontab 文件
-u:指定用户,一般是 root 用户使用的,缺省时默认当前用户;
-e:修改 crontab 文件;
-l:显示 crontab 文件的任务;
-r:删除 /var/spool/crond 目录的 crontab 文件;
-i:删除用户的 crontab 文件时提示;