Crontab定时任务(crontab定时任务配置每天8点运行)

crontab Crontab定时任务 Cron是一个任务调度守护进程,它可以按指定的时间间隔执行任务,即定时任务。这些任务称为cron作业 By myfreax 2 Nov 2022

Cron是一个每日任务调度xinetd,它可以按指定的时间间隔运行每日任务,即计划任务。这类每日任务称作cron工作中,关键应用于自动化控制服务器管理或管理方案。

例如,你们可以设置cron工作中来备份数据库,拼装全新安全补丁,在线升级,检查贮存空间利用,发邮件等。

一些系统软件,如Drupal或Magento务必Crontab的计划任务才能够运行一些功效。你们可以按min,小时,月,日,星期几或大把时间的任意构成运行调度cron工作中。

Crontab文件

Crontab是一个文本文件,用于指定cron工作调度。主要有两种修饰符不一样crontab文件,分别系统区域地图crontab文件和顾客的crontab文件。

顾客的crontab文件是根据用户名取名,其位置因电脑系统有所不同。在依据RedHat的Linux发行版,例如CentOS。crontab文件存储在/var/spool/cron文件文件目录。

依据Debian的Linux发行版,例如Ubuntu。文件存储在/var/spool/cron/crontabs文件文件目录。

虽然你们可以手动式撰写顾客的crontab文件。但建议使用crontab命令进行每日任务计划和调度。

/etc/crontab/etc/cron.d文件文件目录中的文件是电脑操作系统范围crontab文件,必须由root客户开展撰写。

在大多数Linux发行版中,您还可以将cron工作中辅助制作存储在/etc/cron.{hourly,daily,weekly,monthly}文件文件目录。

这类文件文件目录将根据hour/day/week/month推行一次辅助制作。每一个辅助制作都应该具有可执行权限。要不然,把一些推行cron工作中。

Crontab句法

顾客的crontab文件中的每一行包含六个以空格符分隔的字段名,脚后跟要运行的命令。

* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

前五个字段可以包含一个或多个值,用分号或通过连字符-分隔的范围值。

*星号说明一切值。如果你在小时字段名带有星号标识,还表示该每日任务每小时推行一次。

,分号说明允许您指定不断运行时间也。例如,倘若1,3,5在小时小时字段名中,则每日任务将在零晨1点,零晨3点处零晨5点运行。

-连字符允许您指定一个范围值。倘若1-5在星期的字段名中,每日任务将在每一个星期一到星期五每日运行一次。

/斜杠允许您指定它们之间的间隔值。例如,倘若*/4在小时字段名中,还表示每日任务每四个小时推行一次。相当于在小时字段名与指定0,4,8,12,16,20

系统Crontab文件

系统区域地图crontab文件的句法与用户crontabs各有不同。它包含一个额外且所必需的顾客字段名,用于指定以那一个客户身份运行Crontab计划任务。

* * * * * username command(s)
- - - - - -
| | | | | |
| | | | | --- user 
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

形式参数的宏

好多个独特Cron调度宏用于指定共享间隔。您可以使用此快捷方式图标替代五列的日期规范。

@yearly@annually说明每一年1月1日深更半夜零晨12:00运行指定每日任务。相当于0 0 1 1 *@monthly在每一月的第一天深更半夜运行一次指定每日任务。相当于0 0 1 * *

@weekly在星期日的深更半夜运行指定每日任务。相当于0 0 * * 0@daily每日深更半夜运行指定每日任务一次。相当于0 0 * * *

@hourly每小时运行一次指定每日任务。相当于0 * * * *@reboot在开机运行时运行指定每日任务。

Linux Crontab命令

crontab命令允许您打开crontab文件以进行撰写。您可以使用crontab命令以及以下选项查看,再加上,删除或修改cron工作中。

crontab -e说明撰写crontab文件,倘若crontab文件不容易有应创建crontab文件。crontab -l查看crontab文件主要内容。crontab -r删除当前的crontab文件。

crontab -i包交换删除当前的crontab文件,本身就是有提示。crontab -u <username>指定顾客,务必root管理员权限。

crontab -e #edit cron job
crontab -l #list cron job
crontab -i #remove cron job
sudo crontab -u myfreax -l #check cron job of user

crontab命令运用VISUALEDITOR环境变量指定的在线编辑打开crontab文件。

如果你需要运用vim在线编辑,则可那般EDITOR=vim crontab -e运行Crontab命令。运用nano在线编辑,则可那般EDITOR=nano crontab -e运行Crontab命令。

如果你像我们一样,一直运用vim在线编辑,撰写一切配置文件。则能够设全方位的默认在线编辑为vim。

运行命令echo "export EDITOR=vim" | sudo tee -a /etc/environment

EDITOR=vim crontab -e
EDITOR=nano crontab -e
echo "export EDITOR=vim" | sudo tee -a /etc/environment

Crontab变量

在运行你计划任务时,Crontab默认将环境变量PATH设成PATH=/usr/bin:/bin。如果要调用的命令不会有Crontab指定的PATH环境变量中。

则需要使用命令的绝对路径或变更Crontab默认指定$PATH变量。您不能像运用一般辅助制作那样隐式添加目录到$PATH

Crontab在运行你任务完成后将默认设置shell设成/bin/sh。您可以通过变动SHELL变量来设置运行cron每日任务shell。

Cron从用户的家目录运行命令,即将顾客的家目录作为你过程的工作目录。HOME环境变量也可以在cron每日任务辅助制作设置与遮住。

电子邮件通知将发送给crontab的使用者。要遮住默认行为,你们可以设置MAILTO环境变量以及要面对电子邮件通知的电子邮箱地址文件目录。

倘若MAILTO已定义但为空MAILTO="",一般不发送邮件。

Crontab限制

系统管理员能用/etc/cron.deny/etc/cron.allow文件控制哪些用户可以访问crontab命令。这两个文件包括一个用户名文件目录,每行一个用户名。

默认情况下,倘若/etc/cron.deny文件存在且为空,这也就意味着所有用户都能用crontab命令。

如果要回肯定指定用户访问crontab命令,请将用户名再加上到这儿文件中。

倘若/etc/cron.allow文件存在,则仅有这样文件中例举的用户才能够运行crontab命令。如果两个文件并不存在,则只有root客户才可以进行crontab命令。

cron案例

下面是一些cron计划任务案例,将为大家呈现如何安排在多个时间段运行每日任务。

0 15 * * 1-5 command说明从星期一到星期五每日15:00运行command命令。

min字段名是0说明0分,小时字段名是15说明15时,day/天字段*说明每日,月字段名*说明每一个月,week周字段名1-5表星期一到星期五,command最后是你要推行的命令。

0 15 * * 1-5 command

MAILTO=web@myfreax.com

MAILTO=email@myfreax.com说明遮住环境变量MAILTO初值,min字段名是*/5说明每5min,小时字段名是*即每小时,后面的*你就要清楚。

*/5 * * * * /path/to/script.sh > /dev/null每5min运行一次辅助制作然后把标准输出重定向到/dev/null,只有标准有误才可以发送到指定的电子邮箱地址。

MAILTO=web@myfreax.com
*/5 * * * * /path/to/script.sh > /dev/null

0 15 * * Mon command1 && command2

每周的星期一,在下午3点运行2个命令command1和command2,运用&&运算符说明运行command1之后再运行command2。

min字段名是0说明0min,小时字段名是15则在在下午3点,*你就要清楚,week周字段名在是Mon,说明每一周的星期一。

0 15 * * Mon command1 && command2

*/2 * * * * /opt/app/php /path/to/script.php >> /var/log/script.log

每2min运行一次PHP辅助制作然后把标准输出重定向到文件/var/log/script.log

由于php命令也不会有Crontab默认设置变量$PATH,因此在运行php辅助制作时。运用绝对路径指定辅助制作的编译程序。在这样一个案例是/opt/app/php

*/2 * * * * /opt/app/php /path/to/script.php >> /var/log/script.log

从早8点到在下午4点,每小时运行一次/path/to/script.sh辅助制作。

0 8-16 * * * /path/to/script.sh

每一分钟运行min运行一次command命令。并遮住默认生态环境/设置变量HOMEPATHSHELLMAILTO变量。

HOME=/opt
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/zsh
MAILTO=email@example.com
*/1 * * * * command

结论

您早就学会了如何在一定日期时间创建cron作业检查计划任务。假如你有任何疑问,请随时。

LINUX

Linux useradd命令创建用户(用useradd命令以默认值建一个用户)

2023-1-19 9:31:00

LINUX

Linux time时间命令(linux系统修改时间命令)

2023-1-19 9:35:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索