crontab
大约 2 分钟
crontab
linux的系统调度配置,可以周期或指定时间指定任务.最小单位是分.
安装crontab
// 安装
yum install -y cronie
systemctl enable crond
systemctl status crond
systemctl reload crond // 重新加载配置
systemctl restart crond
基本信息
名称 | 说明 |
---|---|
crond | 守护进程 |
crontab | 命令行 |
// 查看运行情况
ps aux | grep crond
// 日志信息
/var/log/cron
// 该文件中所列用户不允许使用crontab命令
/etc/cron.deny
// 该文件中所列用户允许使用crontab命令
/etc/cron.allow
// 列出定时任务
crontab -u nginx -l
// 终止定时任务,会删除指定用户的所有任务,如:/var/spool/cron/nginx
crontab -u nginx -r
// 查看日志
tail -f /var/log/cron
crontab [options]
* * * * * <command>
OR
* * * * * <path/to/script>
系统任务调度
vim /etc/crontab
# 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
minute | hour | day-date | month | day-name |
---|---|---|---|---|
0-59 | 0-23 | 1-31 | 1-12 | 0-6 |
用户任务调度
cd /var/spool/cron
添加定时任务
// 为nginx用户添加相关任务
crontab -u nginx -e
minute | hour | day-date | month | day-name | command |
---|---|---|---|---|---|
*/5 | 3-6 | * | */2 | 0,6 | echo "Hello World!">>/tmp/crontab.txt |
字段 | 值 | 说明 |
---|---|---|
minute | */5 | 间隔,每5分钟,即5的倍数则执行 |
hour | 3-6 | 区间,3点到6点 |
day-date | * | 循环,每天 |
month | */2 | 间隔,每2个月,即2的倍数则执行 |
day-name | 0,6 | 选择,周六和周日 |
// 查看nginx用户的相关任务
crontab -u nginx -l
添加laravel任务调度
cron.txt
* * * * * php /path/artisan schedule:run >> /dev/null 2>&1
/dev/null 2>&1
表示先将标准输出重定向到/dev/null,
然后将标准错误重定向到标准输出,
由于标准输出已经重定向到了/dev/null,
因此标准错误也会重定向到/dev/null,
这样日志输出问题就解决了。
方法一
// 附加新的任务到nginx用户下
cat cron.txt >> /var/spool/cron/nginx
// 重新加载配置文件
systemctl reload crond
方法二
// 指定要执行的任务文件,这样做会直接覆盖/var/spool/cron/nginx,推荐用方法一
crontab -u nginx cron.txt