跳至主要內容

crontab

Moments大约 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
minutehourday-datemonthday-name
0-590-231-311-120-6

用户任务调度

cd /var/spool/cron

添加定时任务

// 为nginx用户添加相关任务
crontab -u nginx -e
minutehourday-datemonthday-namecommand
*/53-6**/20,6echo "Hello World!">>/tmp/crontab.txt
字段说明
minute*/5间隔,每5分钟,即5的倍数则执行
hour3-6区间,3点到6点
day-date*循环,每天
month*/2间隔,每2个月,即2的倍数则执行
day-name0,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 
上次编辑于:
贡献者: Moments