概述
crond 和 crontab是不可分割的。
- crontab是一个命令,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
- crond是crontab的守护进程。cron服务是一个定时执行的服务,可以通过 crontab 命令添加或者编辑需要定时执行的任务。
安装与启停
1 | #安装crontab |
1 | yum install -y vixie-cron |
开机自启动
1 | #查看是否开机自启动 |
1 | vi /etc/rc.local |
crontab命令
1 | crontab -u //设定某个用户的cron服务 |
1 | #查看root用户 |
crond定时方式
第一种:在/etc/crontab下设置,指定用户名的(不专业写法,一般不写在这里面)
1 | 1、vim命令进入/etc/crontab |
第二种:直接用crontab -e,不需要指定用户,如果是root权限,默认是root定时的
1 | 1、crontab -e 进入输入 |
第三种:直接写入/var/spool/cron/root(是用户名称)
1 | 1.vi /var/spool/cron/root |
cron表达式
1 | # For details see man 4 crontabs |
1 | 1)30 21 * * * /usr/local/etc/rc.d/lighttpd restart |
执行失败原因
1 | 1.查看定时任务有没有开启 |
秒级定时任务
crond不能守护秒级定时任务,通常秒级的定时任务需要自己写shell脚本。
方法一
通过写shell脚本,死循环,守护进程运行。
1 | > vi /data/sec.sh |
1 |
|
1 | > chmod +x /data/sec.sh |
方法二
通过crontab,变通的实现每隔多少秒运行一次。
1 | > crontab -e |
1 | * * * * * /bin/echo "hello world" >> /tmp/2.log |
上述方法表示每10秒执行一次echo把”hello world”写入/tmp/2.log文件。
缺点:如果需要每秒运行,那就必须添加60条定时记录,建议使用第一种。