工作排程

工作排程

单一工作排程at

atd服务

使用单一工作排程时必须先开启atd服务。

查看atd服务目前的状态:systemctl status atd

重新启动atd服务:systemctl restart atd

设置atd服务开机启动:systemctl enable atd

执行at的过程

当执行at指令时,会把工作以文本文件的形式写入/var/spool/at/目录下,该工作就会被atd服务调用并执行。

一般来说要对at的使用进行限制,因为黑客经常使用工作排程收集信息,为了限制at的使用,可以增加/etc/at.allow和/etc/at.deny两个文件,在执行at时会先找到/etc/at.allow文件,写在该文件中的使用者才能使用at,不在该文件中就不能使用at。如果/etc/at.allow文件不存在,则会查找/etc/at.deny文件,写在该文件的使用者不能使用at,否则就可以使用。如果两个文件都不存在,那么只有root才能使用at指令。

在一般的linux系统中,只会存在一个空的/etc/at.deny,意味着所有人都可以使用at指令。

at的用法

五分钟后执行任务:at now + 5 minutes

设置具体时间:at 23:00 2015-08-04

执行at命令后会开启at shell环境,用户可以在其中下达指令,这种状态下回车不会结束,按ctrl+d会结束命令输入。注意输入命令时要用绝对路径来下达指令,避免环境变量更换带来的问题。此外在at中下达echo命令不会在规定时间打印到控制台,这是因为at此时的环境与终端无关,所有的输出都会送到执行者的mailbox中,此时应该检查终端机的装置,把echo替换成echo "Hello" > /dev/tty1

在设置完at任务后,可以看见job的号码,执行at -c 2可以查看第2个job在执行时的一些附加指令内容,包括环境变量的设置等。

查看主机上多少at工作排程:atq,此时每行的第一个数字为工作号码

移除at工作排程:atrm 工作号码

背景执行与batch命令

at有一个很大的优点是背景执行,当远程连接到linux执行at任务时,即使连接中断也不会影响at任务的执行,这是因为at工作独立于当前的bash环境,直接交给系统的atd程序接管。

batch命令效果和at相同,不能加时间参数,而是在CPU工作负载小于0.8时,才进行你所下达的工作任务。相当于自动在系统空闲时执行任务。(工作负载是CPU所负责的工作数量)

系统定时任务crontab

系统中的crontab(cron/crond)服务是定时相关的,它是自动开启的,要使用定时任务必须确保其开启。

执行crontab的过程

和at命令一样,crontab也可以建立两个配置文件:/etc/cron.allow和/etc/cron.deny,前者比后者优先级要大,系统会默认建立一个/etc/cron.deny,执行crontab命令时会先检查这两个文件是否有执行权限。

当用户执行crontab时,工作内容就会记录到/var/spool/cron/里去,根据用户名的不同被记录到不同的位置,如abc用户的工作被记录到/var/spool/cron/abc中,这些文件都无法直接用vi编辑。可以经常检查一些这些位置,如果有来源不明的文件可能是感染了木马。

crontab的用法

crontab命令执行格式:crontab [选项],-e代表编辑crontab定时任务,-l代表查询crontab任务,-r代表删除当前用户所有的crontab任务。

进入编辑状态后可以编辑定时任务,相当于使用的是vim编辑器,此时的格式是* * * * * 执行的任务,五个*代表指定任务执行的时机。

分钟数一般不能为*,否则代表每分钟都执行一次。

10 * * * *代表1点10分执行、2点10分执行。。。

星期几和几号同时出现时,只要一个满足要求就会执行。

常常用定时任务来执行脚本,但是注意当脚本中有date命令时:

date=$(date +%y%m%d)这个命令在定时执行时必须在%前加转义符:date=$(date +\%y\%m\%d),因为对crontab命令来说%有特殊作用。

通过命令删除定时任务时只能删除全部,不能删某个,此时要编辑定时任务来删掉对应命令。

其他配置文件

之前的/var/spool/cron/内部记录的是各用户的定时任务,如果要执行系统的例行性任务可以直接修改文件/etc/crontab,cron服务每分钟会检查/var/spool/cron/和/etc/crontab中的内容并执行。(有时也会遇到不能执行的情况,此时可以重启crond服务:systemctl restart crond

第一行指定了使用哪种shell;第二行重新定义了PATH;第三行的意思是例行性工作指令发送错误时,错误讯息会给root发一封邮件;重点的是设置例行任务的格式,在要执行的命令前多了一个用户名,代表执行命令的指令是以什么身份。

与例行任务有关的还有一个目录/etc/cron.d/*,开发软件时会把一些定时任务配置文件放入其中。

/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/里面可以放一些脚本,系统会每小时、每天、每周、每个月自动执行。

资源不均问题

如果执行多个定时任务时可能会出现几个任务同时执行,使系统很繁忙,可以这样设置定时任务让多个任务错开执行:

anacron程序

假如有一个备份的定时任务要深夜执行,但是却遭遇停电,重新启动linux后,如果还想让该备份任务执行而不是直接跳过,就要用到anacron。它可以处理因某些原因超过时间而没有执行的排程工作。

anacron会定期执行,而且会读取时间记录文件,查看上次执行anacron是什么时候,如果发现中断了一段时间,系统就认为定时任务没有执行,anacron就会开始执行未开始的定时任务。

anacron本质上是一个程序,默认一小时执行一次,该脚本在/etc/cron.hourly/0anacron,这个脚本内部会执行:/usr/sbin/anacron -s这个命令,这个命令会根据配置文件的值执行一系列job。这个配置文件就是/etc/anacrontab:

RANDOM_DELAY=45代表随机给予最大延迟时间是45分钟

START_HOURS_RANGE=3-22代表延迟3-22个小时执行任务

最下面三行代表每日、每周、每个月都要执行对应目录下的脚本,第一个数字是天数(超过1天就要执行每日任务,这代表每日定时任务因为某些原因被推迟了,超过7天就要执行每周任务。。)、第二个数字是延迟时间(决定执行定时任务后延迟5分钟后开始,避免刚刚开机任务密集)、第三个字段是任务名称、最后是实际执行的指令,代表执行对应文件夹下的全部指令。

以上述文件倒数第三行为例,anacron的大致执行流程如下:

1、从/var/spool/anacron/cron.daily中取出最近一次执行anacron的时间戳,与/etc/anacrontab中的天数对比,如果超过就决定执行指令。

2、根据/etc/anacrontab中的设置,要延迟3小时+5分钟执行每日任务

3、run-parts命令会在约5分钟内随机选一个时间执行/etc/cron.daily/中的全部任务

综上所述,如果仅仅是执行crontab命令则不会执行错过的任务,但是如果把脚本放置在/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/下,就会在开机后主动执行,这也就是为什么开机一段时间后开始运行很多任务的原因,就是因为很多系统定时任务都是以anacron程序的方式执行。

原文地址:https://www.cnblogs.com/shizhuoping/p/12538985.html

时间: 2024-08-07 22:18:35

工作排程的相关文章

第十六章、例行性工作排程 (crontab)

1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: /etc/at.deny 2.2 实际运行单一工作排程: at, atq & atrm, batch 3. 循环运行的例行性工作排程 3.1 使用者的配置: /etc/cron.deny, crontab 3.2 系统的配置档: /etc/crontab 3.3 一些注意事项 4. 可唤醒停机期

linux例行性工作排程

1.例行性排程有两中方式: 1)每隔一定周期就要来办的事项,用crontab指令实现 2)突发性的,就是这次做完后,就没有了用at指令实现,不过这个需要atd服务的支持 2.linux常见的例行性任务有: 1)进行登录档的轮替:linux会将系统所发生的各种信息都记录下来,这就是登录档,随着系统的运行这些登录档会越来越大,导致系统读写效能下降,因此就需要将这些数据按时间的新旧分别存放,这就是登录档的轮替任务 2)登录文件分析:如果系统发生了软件问题,硬件错误,资源安全问题等,绝大部分的错误都会被

Linux例行性工作排程 (crontab)

crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通过crond这个工业级程序去调度就行了,crond的可靠性,健壮性,是毫无疑问的. 使用者的配置 使用者想要创建循环型工作排程

ubuntu 使用crontab实现工作排程

Cron是Linux系统中最有用的工具之一,cron作业是在指定时间到来时被调度执行的作业. 最常见的自动化系统管理和自动维护工作,比如每天发出的按计划完成了备份的通知,或者是按计划定时清理/tmp/目录的通知.还有很多Web应用程序也需要执行定时作业.到时间吃饭了发送一封邮件通知你可以吃饭了,通知你比赛开始了等等 Linux 上常见的例行性工作 1.进行登录档的轮替 (log rotate): Linux 会主动的将系统所发生的各种资讯都记录下来,这就是登录档 . 由於系统会一直记录登录资讯,

例行性工作排程 (crontab)

1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: /etc/at.deny 2.2 实际运行单一工作排程: at, atq & atrm, batch3. 循环运行的例行性工作排程 3.1 使用者的配置: /etc/cron.deny, crontab 3.2 系统的配置档: /etc/crontab 3.3 一些注意事项4. 可唤醒停机期间的工

Linux-例行性工作排程

1. 例行性工作排程的种类 一种是例行性的,即每隔一定的周期要执行一次的: 一种是突发性的,即只要做一次就好啦. 为了要达成以上两个功能,就要使用at和crontab这两个指令啦. at : at是处理仅运行一次就结束排程的命令,不过要运行 at,必须要有 atd 这个服务的支持才行,atd 可能默认并没有启动,那么 at 这个命令就会失效. crontab : crontab 这个命令所配置的任务将会循环一直执行,可循环的时间有分钟.小时.每周.每月或每年等.crontab 除了可以使用命令运

例行性工作 排程(crontab)

一,什么是例行性工作排程? 计划任务:比如每天,每周,每月,每年或者指定时间需要执行的工作任务 1,Linux工作排程的种类:at,cron a)at :at 处理仅执行一次任务,依赖于atd服务 b)crontab :crontab处理循环的任务, 可循环的时间为分钟.小时.每周.每月或每年等. crontab 除了可以使用指令执行外,也可以编辑 /etc/crontab 来支持. 依赖于crond服务 2,Linux上常见的例行性工作 (1)进行 登录记录的轮询(log rotate) (2

0patch亲自修补Windows工作排程器漏洞

专门打造微修补程序(Micropatch)的0patch,本周出面修补了SandboxEscaper在5月所公布的Windows 10工作排程器(Task Scheduler)零时差漏洞,该漏洞允许本地端***扩张权限以执行任意程序.这已是0patch第二次修补SandboxEscaper所揭露的漏洞,去年8月SandboxEscaper也对外公布了另一个有关工作排程器的零时差漏洞,0patch亦于微软之前释出微修补.0patch的安全研究人员Simon Raner解释,去年的工作排程器漏洞允许

鸟哥私房菜基础篇:例行性工作排程 (crontab)习题

猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0430cron.php 1-今天假设我有一个命令程序,名称为: ping.sh 这个档名!我想要让系统每三分钟运行这个文件一次, 但是偏偏这个文件会有很多的信息显示出来,所以我的 root 帐号每天都会收到差不多四百多封的信件,光是收信就差不多快要疯掉了! 那么请问应该怎么配置比较好呢? 这个涉及数据流重导向的问题,我们可以将他导入文件或者直接丢弃!如果该信息不重要的话, 那么就予以丢弃,如果信息很重