linux探路-例行性工作排程

纵然是瞬间 提交于 2019-11-27 03:43:06

在linux中有的程序是例行性的,如,只执行一次的任务和循环工作的任务。在正常的项目中,只执行一次的任务可能用的比较少,循环执行的任务可能比较常见,比如在项目中我们工作的进程可能会因为某种原因会导致进程挂掉,不可能手工干预去重启进程,所以这就需要定时任务去查询进程的状态,一旦一次就重启,保证功能的稳定性。

在linux的工作排除中,有且只有两种:at和crontab

一、仅执行一次的工作排程:at

首先linux系统上要有负责这个排程的服务atd,这样才能设置at服务,但是并不是所有的linux版本都会开启该服务,所以我们首先要启动这个服务:

systemctl restart atd       ------重新启动atd服务

systemctl enable atd       ------设置开机启动该服务

systemctl status atd       ------查看atd服务状态

1、at的运作方式

在了解at的运行方式前,先了解下atd对用户的管理,并不是所有用户都可以设置at任务的,那它又是怎么管理的呢?是通过/etc/at.allow和/etc/at.deny这两个文件进行管理的:如果at.allow文件中有则可以,没有则不行,如果没有at.allow文件,则at.deny文件中有则不行,没有则可以,如果at.deny文件也没有,那只有root权限可以

一共有两种,一种是以文件的形式放到/var/spool/at这个目录下,atd服务会自动加载并按照文件执行

第二种是以命令的形似加入:at [-mldv] TIME

-m :相当于atrm 删除排程中的工作

-c :列出指定排除工作的实际指令

而增加排程工作,实现如下:

下面了解下常用的at命令:

atq:查询at的排程工作

atrm jobnumber:删除指定编号的排程工作

batch:是在系统空闲的时候执行排程工作,一般是在负载小于0.8

 

一、循环执行的工作排程:crontab

循环执行的工作排程是由cron这个系统服务来控制的,而cron这个服务对用户的管理其实和at一样,是通过/etc/cron.allow和/etc/cron.deny这两个文件进行管理的,而用crontab命令生成的任务是放在/var/spool/cron的目录中的。

crontab的日志在/var/log/cron下,shell脚本的打印也在该日志中

crontab的语法:crontab [-u username] [-ler] 

-l:显示所有工作排程

-e:编辑工作排程

-r:删除工作排程

下面的例子是每天12点发邮件:

下面是关于定时器中特殊符号的意义:

当我设置完定时器后,系统是怎么识别我们设置的任务的呢?系统是通过cron这个服务进行检测的,cron会每一分钟读取一次/etc/crontab(系统性的例行性任务)和/var/spool/cron里的内容。

下面了解下anacron:这个是一个什么样的存在,比如,之前设定的定时任务由于断电导致如期未执行,那么anacron就起作用了,它会一个小时执行一次,去检查那些由于超时未执行的任务,从而执行该任务。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!