Ubuntu:
sudo apt-get install cron
CentOS:
yum install crontabs
Ubuntu:
service cron status
CentOS:
systemctl status crond
定时任务有两种配置方式:
1、在/etc/crontab下设置,需要指定用户名
2、直接用crontab -e,不需要指定用户
crontab -e
(当前用户)
如果是第一次使用,会让你选择一个编辑器,如下:
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
我个人习惯使用vim,所以选择3即可
然后是 编辑内容,如:
0 03 * * * bash /cgh/clearCache.sh
每天3点执行clearCache.sh脚本文件
*号位置 | 含义 |
---|---|
第一个 | 一小时当中的第几分钟(分钟) |
第二个 | 一天当中的第几小时(小时) |
第三个 | 一月当中的第几天(天) |
第四个 | 一年中第几个月(月) |
| 第五个 | 一周当中的星期几 范围0-7 ( 0和7都代表星期日) |
特殊符号说明
特殊符号 | 含义 |
---|---|
* | 表示任何时间,比如第一个*,表示一小时每分钟执行一次 |
, | 表示不连续时间,比如“0 8,10 * * * * 命令”,表示每天8点0分,10点0分执行一次命令 |
- | 表示连续的时间范围,比如“0 2 * * 1-6 命令”,表示周一到周六凌晨2点执行命令 |
*/n | 表示每隔多久执行一次,比如“*/10 * * * * 命令”,表示没10分钟执行一次命令 |
特定时间执行案例
Ubuntu:
sudo service cron restart
CentOS:
systemctl restart crond
crontab -e 编辑或创建一个定时任务
crontab -l 查看当前用户的定时任务
crontab -r 删除当前用户的定时任务
有时候发现定时任务没有按预期执行,可以能过查看日志发现执行相关的问题。
一般来说 ,crontab的运行日志可以在/var/log/cron.log文件中。
如果没有/var/log/cron.log文件,试一下/var/log/cron
crontab为什么有时候找不到日志? 需要通过配置打开crontab的日志记录功能。
通过以下方式开启crontab的日志记录功能。
sudo vim /etc/rsyslog.d/50-default.conf
cron.* /var/log/cron.log #将cron前面的注释符去掉
sudo /etc/init.d/rsyslog restart #重启rsyslog
sudo service rsyslog restart #重启rsyslog
sudo service cron restart #重启cron程度
sudo service crond restart #重启crond。 在有的系统中,定时任务程序名称是crond 打开日志记录功能后,就可以看到相应的crontab的执行日志了。