Linux任务调度进程crond命令的使用方法和注意事项

飞来科技  发布时间:2019-08-08 18:01:30

本文关键词:重启crontab 进程

重启crontab 进程_linux重启crontab进程_linux crontab重启

一、crond简介

定义

crond的定义和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用来设置周期性被执行的命令。该指令从标准输入装置读入命令,并将其存放于“crontab”文件中,以供以后调用和执行。该词来源于希腊语 chronos(χρ?νο?),本意是时间。而crond正是它的守护进程。

crond是linux下用于周期性的执行某些任务或等待处理这些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,所以会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,所以有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,功能任务调度和用户任务调度。

l 系统任务调度:功能周期性所要执行的工作,譬如写缓存数据到u盘、日记清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的顶配文档。

/etc/crontab文件包含上面几行:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

linux crontab重启_重启crontab 进程_linux重启crontab进程

# run-parts

01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly前四行是用于配置crond任务运行的环境变量,第一行SHELL变量指定了功能要使用哪个shell,这儿是bash,第二行PATH变量指定了功能执行指令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,所以MAILTO变量的值为空,则认为不发送任务执行信息给用户,第四行的HOME变量指定了在执行指令如果插件时使用的主目录。第六至九行表示的意思将在下个小节详细讲述。这里不在多说。

l 用户任务调度:用户定期要执行的工作,譬如用户数据备份、定时短信提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保留在 /var/spool/cron目录中。其文件名与用户名一致。

二、crontab工具的使用

(1)crontab的应用文档

crontab常见的应用文档有如下两种:

crontab [-u user] [file]

crontab [-u user] [-e|-l|-r |-i]

选项含义如下:

l -u user:用于设定某个用户的crontab服务重启crontab 进程,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

l file:file是命令文件的昵称,认为将file做为crontab的任务页面文件并载入crontab。如果在命令行中没有指定这个文档,crontab指令将接受标准输入(鼠标)上键入的指示,并将这些载入crontab。

重启crontab 进程_linux重启crontab进程_linux crontab重启

l -e:编辑某个用户的crontab文件内容。如果不指定用户,则认为编辑当前用户的crontab文件。

l -l:表明某个用户的crontab文件内容,所以不指定用户重启crontab 进程,则认为表明目前用户的crontab文件内容。

l -r:从/var/spool/cron目录中删除某个用户的crontab文件,所以不指定用户,则默认删除目前用户的crontab文件。

l -i:在删除用户的crontab文件时给确定提示。

(2)crontab文件的意思

用户所构建的crontab文件中,每一行都代表一项任务,每行的每位函数代表一项设置,它的文档共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,文档如下:

minute hour day month week command其中:

l minute: 表示分钟,可以是从到59之间的任何小数。

l hour:认为小时,可以是从到23之间的任何小数。

l day:认为日期,可以是从1到31之间的任何小数。

l month:认为月份,可以是从1到12之间的任何小数。

linux重启crontab进程_linux crontab重启_重启crontab 进程

l week:认为星期几,可以是从到7之间的任何小数,这儿的或7代表星期日。

l command:要执行的指示,可以是功能指令,也可以是自己编写的插件文档。

在以下各个函数中,还可以使用以上独特符号:

l 星号(*):代表所有应该的值,例如month函数或者是星号,则认为在满足其他函数的约束条件后每月都执行该指令操作。

l 逗号(,):可以用空格分隔的值指定一个列表范围,例如,“1,2,5,7,8,9”

l 中杠(-):可以用小数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

l 正斜线(/):可以用正斜线指定时间的间隔频率,例如“-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,所以用在minute函数,认为每十分钟执行一次。

(3)crontab文件举例

*/3 * * * /usr/local/apache2/apachectl restart表示每隔3个小时重启apache服务一次。

30 3 * * 6 /webdata/bin/backup.sh

表示每周六的3点30分执行/webdata/bin/backup.sh脚本的操作。

重启crontab 进程_linux crontab重启_linux重启crontab进程

1,20 * * fsck /dev/sdb8

表示每个月的1号和20号检查/dev/sdb8磁盘装置。

10 5 */5 * * echo "">/usr/local/apache2/log/access_log表示每个月的5号、10号、15号、20号、25号、30号的5点10分执行清理apache日志操作。

三、 使用crontab工具的注意事项

(1)提醒环境变量问题

有时我们创建了一个crontab,所以这个任务却无法自动执行,而手动执行这个任务却没有问题,这样现象一般是由于在crontab文件中没有配置环境变量引起的。

在crontab文件中定义多个调度任务时,需要非常提醒的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在目前shell环境下进行的,流程其实能找到环境变量,而功能自动执行任务调度时,是不会加载任何环境变量的,所以,就需要在crontab文件中指定任务运行所需的一切环境变量,这种,功能执行任务调度时就没有问题了。

(2)提醒清理功能用户的短信日志

每条任务调度执行完毕,功能就会将任务输出信息通过电子邮件的方式发送给目前模块用户,这种日积月累,日记信息会更加大,可能会影响功能的正常运行,所以,将每条任务进行重定向处理相当重要。

例如,可以在crontab文件中增设如下形式,忽视日志输出:

*/3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,所以标准错误也会重定向到/dev/null,这种日志输出问题就解决了。

(3)功能级任务调度与用户级任务调度

模块级任务调度主要完成功能的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这样做),所以反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,所以要定义一个定时重启功能的任务,就必须将任务放在/etc/crontab文件,但是在root用户下创建一个定时重启功能的任务应该无效的。

本文来自互联网,由机器人自动采编,文章内容不代表本站观点,请读者自行辨别信息真伪,如有发现不适内容,请及时联系站长处理。

    相关阅读
    江苏快三开奖结果