怎么安装crontab(crontab 加载文件),本文通过数据整理汇集了怎么安装crontab(crontab 加载文件)相关信息,下面一起看看。

crontab安装配置文件(crontab保存)01 何为计划任务计划任务,顾名思义:计划在未来某个时间点要执行的任务,也可称为定时任务。有一次性的计划任务,也有周期性的计划任务。一次性的

01 何为计划任务

计划任务,顾名思义:计划在未来某个时间点要执行的任务,也可称为定时任务。有一次性的计划任务,也有周期性的计划任务。

一次性的计划任务就相当于待办,如今天下午三点开会,那么它只会在今天下午三点提醒一次;周期性的计划任务就和我们手机闹钟一样,如设置工作日7点整的闹钟,那么每个工作日7点整闹钟都会准时响。

但我们平常说的计划任务大多是指周期性的计划任务,用来执行那些需要重复执行的命令和工作,如定时重启、打包、清理日志等等,大大满足了日常运维需求。

在Linux中,一次性的计划任务由at和batch命令完成;而周期性的计划任务则涉及到两个服务,分别是crond和anacron。今天我们要讲的是crond服务,对应的命令是crontab命令。

crond 服务是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似。在安装完操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 服务每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。

02 crond配置文件

Linux下的任务调度分为两类,系统任务调度和用户任务调度,其对应的配置文件和目录也各不相同。

系统任务调度

系统任务调度,系统周期性要执行的动作,配置文件为/etc/crontab,该配置为全局性的。

可以看到,该配置文件已经在注释中告诉我们,这个配置文件是系统层面的crontab,与其他crontab不同(即用户任务调度),在编辑此文件和/etc/cron.d/目录中的文件时,不必运行crontab命令。这些文件还额外具有一个用户名字段,但其他crontab都没有。

接着就是一些环境变量的设置。SHELL变量指定使用哪种shell,PATH变量指定系统执行命令的路径。MAILTO变量指定crond的任务执行信息将通过邮件发给哪个用户。HOME变量指定在执行命令或者脚本时使用的主目录。

系统计划任务的语法比较简单,由三部分组成。前面五个星号"*"表示时间:分时日月周;接着就是用户名:以什么身份执行,因为它是全局性的,所以必须指明身份;最后就是要执行的命令command。

在上图中,"run-parts"命令用来执行指定目录中的可执行脚本,这里引生出了四个目录,存放需要定期运行的脚本:

/etc/cron.hourly/:每小时执行的脚本/etc/cron.daily/:每日执行的脚本/etc/cron.weekly/:每周执行的脚本/etc/cron.monthly/:每月执行的脚本

我们以/etc/cron.daily/目录为例,该目录下存放的是每日运行的可执行脚本,其内容就是要执行的命令。(具备执行权限)

另外除了/etc/crontab配置文件,我们还可以在/etc/cron.d/目录中存放系统层面的crontab文件。(不具备执行权限,注意和上面四个目录中的文件区分)

两者的语法一致。我们通常不会去修改/etc/crontab文件,而是去操作/etc/cron.d/目录下的crontab文件。该目录下的计划任务,相对"run-parts"命令涉及到的四个目录中的计划任务,有更自由的调度。

用户任务调度

用户任务调度,用户自定义的周期性动作,配置文件存放在/var/spool/cron/目录(或子目录/var/spool/cron/crontabs/),文件名与用户名一致。

虽然都是crontab文件,但不能直接对其进行编辑,而是通过运行crontab命令对其进行编辑。

这里提示没有用户自定义的计划任务,在下面的章节,我们会使用crontab命令来创建用户的crontab,同时掌握其语法。

其他文件

除了以上两种,crond服务还涉及以下目录和文件。

/etc/cron.deny:黑名单。如果该文件存在,则其中的用户不允许使用crontab命令/etc/cron.allow:白名单。如果该文件存在,则只有其中的用户允许使用crontab命令如果两个文件都不存在,则只有超级用户允许使用

语法很简单,每行一个用户名即可。

03 crontab命令使用

crontab命令用于维护每个用户的crontab文件,它的使用比较简单,如下是各选项的用法,我们熟练使用前面四个选项即可。

crontab -e:编辑该用户的crontab,指定crontab不存在时则新建crontab -l:列出该用户的crontabcrontab -r:删除该用户的crontabcrontab -u:指定要对哪个用户的crontab进行操作crontab -i:删除crontab之前弹出对话框

首先是"-u"选项,在不添加该选项时,默认是对当前用户的计划任务进行操作。如下图:当前用户为root,直接使用"-l"选项,提示root没有crontab;添加"-u"选项,则列出指定用户kali的计划任务。(需要注意的是,只有管理员权限才能使用"-u"选项,其他用户使用需要sudo)

由于用户kali也没有计划任务,所以同样提示没有kali的crontab。这里我们需要使用"-e"选项,为用户kali新建计划任务。

在新建计划任务之前,我们需要详细了解用户crontab文件的语法。用户crontab语法和系统crontab语法差不多,只是少了一个用户名字段而已。command部分没啥好讲的,我们重点讲时间的设置。

第五个时间字段,也就是星期字段,数字0和7均代表星期天,还可以用星期的英文来表示星期几。另外,五个时间字段中除了可以使用数字,还可以使用如下几个特殊字符。

星号(*):代表取值范围内的值(任意/每)。逗号(,):一个列表。中杠(-):一个范围。正斜线(/):间隔频率。

下面我们举例来理解这几个特殊字符的使用场景。

每分钟执行一次命令* * * * * command (*表示任意时间,每;最小单位为每分钟)每天的2点整执行一次命令0 2 * * * command每个月的1号的2点整执行一次命令0 2 1 * * command每2分钟执行一次命令*/2 * * * * command (/表示时间间隔,每num执行一次)每小时的第2和第8分钟时执行一次命令2,8 * * * * command (,表示列表,在num1,num2,...的时候执行一次)每天2点到8点之间,每分钟执行一次命令* 2-8 * * * command (-表示范围,在num1到num2之间的某种条件下执行一次)每个月的、5和6号的、3到4点之间,每2分钟执行一次命令*/2 3-4 5,6 * * command (组合使用)

特殊字符可以单独使用,也可以组合使用,篇幅关系,就不一一列举,大家学会举一反三。五个字段都是对时间进行操作,只是取值范围和单位不一样而已。

介绍了时间字段的语法,接下来我们使用"-e"选项来为用户新建crontab。

第一次操作时,系统会要求我们选择编辑器,选择自己熟练的编辑器即可;选择之后会进入到crontab文件编辑的界面,我们在文件中按照语法添加计划任务,保存退出即可。(这里我没有放截图,大家敲下命令就知道了)

再次使用"-l"选项,直接列出crontab内容,上面的注释为系统自动生成,只有最后一句是我手工添加的。需要注意的是,不同系统,crontab命令打开的crontab文件内容不一定相同,有的可能没有注释,有的第一次使用可能不需要选择编辑器就直接进入crontab文件编辑界面了。(当然选择哪个编辑器也可以我们人工配置,这里不是我们要讲的知识点)

查看/var/spool/cron/crontabs目录,发现存在一个名为kali的crontab文件。

使用"-r"选项删除用户的crontab,注意该选项直接删除crontab文件,而不是删除其中的某条。因此删除之后,名为kali的crontab文件将从目录中删除。

04 总结

计划任务的配置文件和目录涉及较多,以前没接触过的校友一时半会儿可能无法很好地吸收,大家可以带着以下几个问题去理解记忆。

问题1:任务调度分哪两种?答:系统任务调度、用户任务调度问题2:不同计划任务的配置文件分别是?答:系统/etc/crontab、用户/var/spool/cron/*问题3:还涉及到哪些文件和目录?答:/etc/cron.d/*/etc/cron.hourly/*/etc/cron.daily/*/etc/cron.weekly/*/etc/cron.monthly/*问题4:问题3中各目录的区别?答:/etc/cron.d/存放crontab文件,其他目录存放需周期性运行的可执行脚本问题5:计划任务的黑白名单是哪两个文件?答:/etc/cron.deny、/etc/cron.allow

计划任务的知识如果要深讲,还有很多可以讲的。不过大家掌握以上五个问题+语法+crontab命令,就足够了。如果感兴趣,大家可以去查阅官方的手册进行知识的补充。

更多怎么安装crontab(crontab 加载文件)相关信息请关注本站。