Linux中的计划作业

周期性计划作业--cron :

cron:是一个进程可以让linux周期性的执行某一命令。

crontab是一个命令,可以设置linux周期性的执行某一命令。

  -:设置某一个用户的周期性工作—root权限;

  -:编辑 crontab 的工作内容

  -:查阅 crontab 的工作内容

  -:移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑

 

Linux中的计划作业

使用 crontab -eu lewis 来设置周期计划作业 , 注意这个 -e 要写在 -u 的前面 , 回车后 就像进入一个 vim 的界面.

 

crontab的格式讲解 :

    一行代表一个任务

    minute   hour   day   month   week   command

    •minute: 表示分钟,可以是从059之间的任何整数。

    •hour:表示小时,可以是从023之间的任何整数。

    •day:表示日期,可以是从131之间的任何整数。

    •month:表示月份,可以是从112之间的任何整数。

    •week:表示星期几,可以是从07之间的任何整数,这里的07代表星期日。

     •command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

 特殊字符

 代表含义

 *(星号)

 代表任何时刻都接受的意思,*代表的是任何时候

 ,(逗号)

 代表分隔字段的意思

例如: 15,30,45 * * * * command 代表的是每月每日每小时的15,30,45分的时候执行命令

-(减号

 代表一段时间范围内

例如: 10 7-10 * * * command 代表的是每月每日的 (7点~10点) 7点10分,8点10分,9点10分,10点10分时执行命令

 /n  

 那个 n 代表数字,也就是每隔 n 单位间隔的意思

例如 /5 * * * * command 代表的是每月每日每时每5分钟执行一次

计划作业的实例

 

 每1分钟执行一次 

  /1 * * * * command

 每小时的第15,30,45分钟执行

 15,30,45 * * * * command

 7点到10点的第10,50分钟执行

 10,50 7-10 * * * command

 每隔一天的7点到11点的第20和第40分钟执行

 20,40 7-11 */1 * * command

 每周一的7点到11点的第25和第50分钟执行

25,50 7-11 * * 1 command

 每天的3:30执行

 30 3 * * * command

 每月11020日的3 : 30执行

 30 3 1,10,20 * * command

 每周六、周日的3 : 30执行

 30 3 * * 6,7 command

 每天9点到16点之间每隔15分钟执行

 /15 9-16 * * * command

 

crontab配置举例 :

每个晚上10点,提示用户可以去睡觉了 :

Linux中的计划作业

先是通过 crontab -eu lewis 进入到cron的 vim 编辑界面输入 * */10 * * * go to sleep  然后按 Esc 键 wq 保存退出.

Linux中的计划作业

下面我们来看一下 lewis 用户下的 crontab -l -u lewis 信息.

 

每分钟,查看/var/log/cron日志文件有没有发生过变化

Linux中的计划作业

 

/etc/crontab配置文件讲解 :

Linux中的计划作业

一行SHELL变量指定了系统要使用哪个shell,这里是bash

第二PATH变量指定了系统执行命令的路径

第三MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

 

crontab配置原理 :

当使用者使用 crontab 这个命令来创建工作排程之后,该项工作就会被纪录到 /var/spool/cron里面去了,而且是以帐号来作为判别的.

如:lewis用户使用 crontab 后, 他的工作会被纪录到 /var/spool/cron/lewis中。另外cron 运行的每一项工作都会被纪录到 /var/log/cron 这个日志文件中.

crond服务每分钟检测一次,所以 cron 会每分钟去读取一次 /etc/crontab 与 /var/spool/cron 里面的数据内容 ,因此,只要你编辑完 /etc/crontab 这个文件,并且将他储存之后,那么 cron 的配置就自动的会来运行了.

如果你修改完的crontab或者添加的crontab没有马上的执行起来,那么你可以用  systemctl restart crond.service 重启

 

转载自 : 51自学网​​​​​​​