linux定时任务配置

说实话,Linux crontab 确实很好用。
我依靠它在服务器上执行数据同步任务。
但说实话,刚开始做的时候我真的很困惑,尤其是时间字段,很容易搞混。

给我印象最深的是第一次使用 crontab -e 时,系统直接出现让我选择编辑器。
当时他握了我的手,选择了vim。
结果,当我编辑完保存退出时,各种按键乱飞,最终写错了任务。
接下来我将其更改为nano,按Ctrl+O保存,然后按Ctrl+X退出。
这次就稳定多了。
用crontab -l查看任务,用crontab -r删除所有任务(要谨慎使用,我朋友不小心按了一次回车,几个重要的任务就没了,这时就变成绿色了)。

我在时间字段上遇到了困难。
例如,我想创建一个每天凌晨3 点运行的任务,所以我简单地写了03 但是有一次我看到星号是十字,它变成了03 3 所以该任务将在3 月3 日每天运行,几个月都无法正确运行。
还有一种情况是我写了一个任务每周日午夜运行,用的是000,但是我忘了周日是0还是7 ,任务很长时间没有运行。
查了手册,发现0和7 都代表星期日。

我还被提醒运行脚本。
我的主目录中有一个监控脚本。
我配置crontab的时候直接写/home/xxx/script.sh。
结果,执行多次失败。
后来发现crontab的工作目录是根目录,所以脚本必须使用绝对路径。
并且脚本必须有执行权限,需要chmod+x。
我忘记给脚本添加权限,当 crontab 运行它时,它报告一个错误,说找不到文件。

在写日记方面我没有犯过任何大错误。
我通常只看/var/log/cron。
日志记录非常详细,包括什么时候运行的、哪个用户运行的、命令是什么。
我有一个从来没有做过的任务,在日志中发现路径不对,所以我就改了一下就可以了。
有时脚本执行时会出现错误,错误信息会记录在日志中。
我可以简单地 grep 来过滤它。

我在处理环境变量时也遇到了一些陷阱。
我有一个脚本需要使用某些命令,但是当我直接运行crontab时,它报告找不到该命令。
后来了解到crontab默认的环境变量很少,必须手动添加。
我将行 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 添加到脚本的开头,一切都很好。

我还使用了调试技术。
我有一个脚本无法正常工作,因此我向该脚本添加了一条输出语句,并将输出重定向到日志文件。
这样您就会知道哪个步骤导致了问题。
然而,有时脚本问题更加微妙,需要多次尝试才能找到。

总的来说,crontab用得好确实很方便,但用得不好也会让人秃头。
尤其是时间字段和脚本路径,一不小心就可能出现问题。
我建议初学者他们开始练习简单的任务,例如每分钟回响一次“hello world”,然后在熟练后转向复杂的任务。

linux定时任务--crontab

crontab这个东西,说白了,就是Linux系统中的一个计划任务的工具。
指定时间,它会自动为您运行命令或脚本。

基本用途如下:
1 .如果您想查看某人有哪些计划任务,请使用 crontab -l。
例如crontab -l -u bob 就是查看用户bob。
2 . 如果您想自己添加任务,请使用 crontab -e,这将打开一个文本文件供您写入。
3 、如果写错了任务,想删除它,使用crontab -r。

在CentOS6 系统中,cron服务的操作比较简单:

停止定时任务:service crond stop。
例如,2 01 8 年3 月1 0日,我尝试了这个命令,它确实成功了。

启动计划任务:服务启动,此时又启动。

重启服务:重启服务,定位即可。

CentOS7 不同,必须使用systemctl:

检查cron任务是否启用:systemctl crond.service是否启用,如果显示enabled,则表示启用。

关闭自启动:systemctldisable crond.service。
我以前也这么做过,效率确实很低。

启用自启动:systemctlenable crond.service,这个也可以打开。

查看服务状态:systemctl status crond.service。
我当时检查了一下,显示正在运行。

其他操作:启动、关闭、重启、重新加载都是systemctl加上相关命令。

编辑计划任务时,您需要输入如下内容:
分钟 小时 日月 周 顺序
例如:
/1 0 /path/to/script.sh
这意味着每十分钟运行一次脚本。
此处:

分钟:0 到 5 9 ,例如,5 就是 5 分钟。

时间:0 到 2 3 ,例如 1 4 是下午 2 点。

天:1 到3 1 ,例如1 5 号就是1 5 号。

月份:1 到 1 2 ,例如 7 月 7 日。

周:0到6 ,0和7 都是星期日。

命令:要执行的命令,例如运行脚本。

一些特殊符号也可以用于时间:

Asterix ():这包括所有内容,例如月份,这意味着它每月运行。

逗号(,):计数,例如1 ,3 ,5 表示第1 、第3 、第5 次运行。

中条(-):范围,例如1 0-2 0表示从1 0移动到2 0。

正斜杠(/):间隔,例如/5 表示每五分钟运行一次。

说实话,刚开始做的时候我也不太明白。
后来我又试了几次,就好多了。