关于crontab,我们就是认真cr

crontab从入门到出坑此篇技术博文主要介绍的是crontab,Linux下的计划任务管理工具。涉及内容包括crontab使用配置、常见坑的分析和编者总结的错误调试方法。非标题*文章,真正地帮您从入门到出坑。

我的理解,后台任务通常分为两种:常驻和定时。之前的文章《pm2进程管理工具使用总结》主要针对的是常驻任务。今天来谈谈crontab,主要针对的是定时任务。

实验环境:centos7

介绍crontab

crontab的服务进程名为crond,英文意为周期任务。顾名思义,crontab在Linux主要用于周期定时任务管理。通常安装操作系统后,默认已启动crond服务。crontab可理解为cron_table,表示cron的任务列表。类似crontab的工具还有at和anacrontab,但具体使用场景不同,可参见附录《让你学会Linux计划任务》一文了解更多。

关于crontab的用途很多,如

定时系统检测;

定时数据采集;

定时日志备份;

定时更新数据缓存;

定时生成报表;…等等任务

当然,更多使用场景是要以视具体情况而定了。毕竟是工具通常都是常用规则总结而成的产物。

确认crond服务已经安装与开启之后,下面开始具体说明

简单示例

先来个简单示例体验一下。

目标:每分钟向/tmp/time.txt文件下写入当前时间

新建crontab任务

$crontab-e//打开crontab任务编辑*****date/tmp/time.txt

静静等待几分钟

$cat/tmp/time.txtDo29.Dez22:45:01CSTDo29.Dez22:46:01CSTDo29.Dez22:47:01CST

从上面结果看出,每分钟执行了date并写入到/tmp/time.txt。

简单示例演示成功。下面从细节深入说明crontab使用。

使用选项

上面的实验中使用了crontab命令的-e选项。我们来看看crontab命令中有哪些选项?

-e选项表示打开当前用户的crontab任务列表配置文件。当然也可以直接打开,路径通常是在/var/spool/cron/下,文件以用户名命名,如/var/spool/cron/root。不过,采用-e方式打开,福利是可以帮助我们自动检查任务配置符合规则。

-u选项指定某用户的任务列表,很好理解。比如我当前是root用户,想操作poloxue用户的任务列表。如下:

$crontab-upoloxue-e

-l选项列出某用户的所有任务列表

-r选项删除某用户的所有任务列表,这个选项使用小心为上,估计也只是自己实验时玩玩而已,正常不使用。

crontab命令的选项中,主要使用的就是以上几个,理解比较简单。

任务配置

说完了crontab的命令选项,下面开始真正的大戏,任务列表文件如何配置?

首先,看下crontab任务列表配置格式,示例文件如下:

SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root#更多细节man4crontabs#计划任务定义的例子:#.----------------分(0-59)#

.-------------时(0-23)#

.----------日(1-31)#

.-------月(1-12)#

.----星期(0-7)(星期日可为0或7)#

#*****执行的命令*****date/time.txt21

从上面的示例文件可看出,crontab的任务列表主要由两部分组成:环境变量配置与定时任务配置。可能大家在工作中更多是只用到了任务配置部分。

环境变量配置部分

理解环境变量配置这部分可以帮助我们减少去踩一些不必要的坑。简单说明上面涉及的环境变量。

SHELL为/bin/bash,表示使用/bin/bash解释执行命令

PATH表示到哪些目录路径寻找命令程序,此环境变量的值说明了为什么我们在crontab中执行命令时,尽量要写命令全路径才能执行的原因。

MAILTO变量作用是当任务执行有输出时,内容发送到哪个用户的邮箱。禁用可以设置MAILTO=”“。

当我们在使用crontab时,发现某些定时任务不能顺利执行,但shell控制台执行成功,环境变量是否正确是我们需要首先







































白殿疯病厦门那一家医院可以
哪个医院白癜风好治



转载请注明:http://www.xxcyfilter.com/zyfz/7642.html