linux例行性工作排程

1.例行性排程有两中方式:

1)每隔一定周期就要来办的事项,用crontab指令实现

2)突发性的,就是这次做完后,就没有了用at指令实现,不过这个需要atd服务的支持

2.linux常见的例行性任务有:

1)进行登录档的轮替:linux会将系统所发生的各种信息都记录下来,这就是登录档,随着系统的运行这些登录档会越来越大,导致系统读写效能下降,因此就需要将这些数据按时间的新旧分别存放,这就是登录档的轮替任务

2)登录文件分析:如果系统发生了软件问题,硬件错误,资源安全问题等,绝大部分的错误都会被记录到登录文件中,因此系统管理员的重要任务之一就是分析登录档。但你不可能手动透过vim等软件去监视登录文件,因为数据太复杂了,因此系统提供了logwatch这只程序,来主动分析登录信息。

3)locate数据库的建立:存放在/var/lib/mlocate中,系统会主动在规定时间调用updatedb这条指令,更新这个数据库

3)whatis数据库的建立

4)RPM软件登录文件的建立:RPM是一种软件管理机制。由于系统可能会常常变更软件,包括软件的新安装,非经常性更新等,都会造成软件文件名的差异。为了方便未来追踪,系统也帮我们将文件名做个排序的记录。有时候系统也会透过排程来帮忙RPM数据库的重新建置

5)移除暂存档:软件运行会产生一些临时文件,但软件关闭后,这些临时文件可能还存在,如果超出一定的时间后,这个暂存盘就没有效用了,此时移除这些暂存盘就是一件重要的工作。否则磁盘会很快被耗光。

6)与网络服务相关的分析行为:如果安装了www网站服务软件,那么linux通常会主动分析该软件的登录文件。同时某些凭证与认证的网络信息是否过期问题,我们的linux系统也会帮我们自行检查

3.atd的启动与at的运行方式:

1)启动方式:/etc/init.d/atd restart(start ,stop)

2)at的运行方式:

a)先找寻/etc/at.allow这个档案,写在这个档案中的使用者才能使用at,没有在这个档案中的使用者则不能使用at

b)如果/etc/at.allow不存在,就寻找/etc/at.deny这个档案,若写在这个at.deny的使用者则不能使用at,而没有在这个at.deny档案中的使用者,就可以使用at这个指令了

c)如果两个档案都不存在,那么只有root可以使用at这个指令

3)通常系统默认所有的用户都是可信任的,因此系统通常会保留一份空的/etc/at.deny档案,不过万一你不希望某些使用者使用at指令,将那个使用者的账号写入/etc/at.deny即可,一个账号一行

4.at [-mldv] TIME;at -c 工作号码:单一工作排程,参数,

1)at的工作完成后,及时没有输出信息,也要给使用者发邮件,告知使用者该工作已完成

2)-l:atq的别名,列出目前系统上面的所有该用户的at排程

3)-d:at -d相当于atrm ,可以取消一个在at排程中的工作

4)-v:可以使用较明显的时间格式列出at排程中的任务栏表

5)-c:可以列出后面接的该项工作的实际指令内容。

6)TIME:时间格式,这里可以定义出设么时候要进行at这项工作的时间,格式有

HH:MM,在今日的HH:MM时刻进行,若该时刻已超过,则明天的这个点进行此工作

HH:MM YYYY-MM-DD,强制规定在某年某月的某一天的特殊时刻进行该工作

HH:MM[ap|pm] [Month][Date],强制在当前年,指定月日进行

HH:MM[ap|pm]+number[minutes|hours|days|weeks],可以用now指代当前时间,即在某个时刻后的多久执行该操作。

7)当我们使用at时会进入一个atshell的环境来让用户下达工作指令,此时,建议你最好使用绝对路径来下达你的指令,比较稳定,因为指令的下达与PATH变量有关,同时与当时的工作目录还有关。at在运行时,会跑到当时下达at指令的那个工作目录去执行指令

8)在at指令中下达echo "Hello"。不会显示到屏幕上,因为at的执行与终端机环境有关,而与标准输出或标准错误输出无关,如果想在终端机上看到信息可以通过echo "Hello" > /dev/tty1这个指令来实现。

9)由于at工作排程的使用上,系统会将该项at工作独立出你的bash环境中,直接交给系统的atd程序来接管,因此,当你下达了at的工作之后就可以立刻脱机了,剩下的工作交给linux管理即可。如果有长时间的网络管理工作时,使用at可以让你免除网络断线的困扰。

5.batch:系统有空时才进行背景任务。batch是利用at来进行指令的下达。只是加入了一些控制参数。这个batch会在CPU工作负载小于0.8的时候,才进行工作你所下达的工作任务。负载是指CPU在单位时间所负责的工作数量(进程数),不同于CPU利用率,比如有一只程序他需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于1,如果同时执行两只程序,则负载是2

所以CPU的负载反映的是CPU需要在多少个不同工作之间切换。

6.循环执行的例行性工作排程:由cron(crond)这个系统服务来控制,同样可以通过/etc/cron.allow,/etc/cron.allow来进行限制该服务的使用名单。当用户使用crontab这个指令后,该项记录会被记录到/var/spool/cron/里面去,并且以账号作为判断。比如huge执行了crontab这个指令,他的工作会被记录到/var/spool/cron/huge里去。但不要直接使用vi直接编辑该档案,因为可能输入语法错误。会导致无法执行cron。另外,cron执行的每一项工作都会被记录到/var/log/cron这个登录档中,所以可以根据这个档案,来擦看是否有木马植入。

7.crontab [-u username] [-l|-e|-r]:循环执行例程任务,参数

1)-u:只有root才能执行这个任务,亦即帮其他使用者建立/移除crontab工作排程

2)-e:编辑crontab的工作内容

3)-l:查阅crontab的工作内容

4)-r:移除所有crontab的工作内容,若仅移除一项,使用-e比较好。

每项指令都有六个字段,含义依次为:分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、周(0-7)、指令。其中0和7都代表周日。

还有一些辅助字符:

a)*:代表任何时刻都接受的意思。

b),:代表分割时段的意思,比如下达3到6点,则是这样的:0 3,6 * * * command

c)-:代表一段时间范围,比如8到12点之间的每小时的20分钟进行一项工作:20 8-12 * * * command

d)/n(斜线):n表示数字,亦即每隔n单位间隔的意思,例如每5分钟进行一次,则:* /5 * * * * command。

8./etc/crontab:系统配置文件,crontab -e是针对使用者的cron来设计的,如果是系统例行性任务时,只需编辑.etc/crontab这个档案就可以了,cron这个服务的最低侦测限制是分钟,所以cron会每分钟去读取一次/etc/crontab与/usr/bin/crontab这个执行档,所以,只要你编辑完/etc/crontab这个档案,并将它保存之后,那么cron的设定就自动会来执行了。

查看该文件会发现有一个PATH,代表执行文件搜寻路径,MAILTO=root:代表若有额外的STDOUT,将以email将数据传给该指定的用户。

/etc/crontab这个档案支持两种指令下达方式:

1)指令型态,即直接在后面跟指令

2)目录规划,使用run-parts指令,将要执行的脚本都放到这个目录下面,即可

9.一些注意事项:

1)资源分配不均,包括流量,区域内其他PC的流量侦测,CPU使用率,RAM使用率,在线人数实时侦测。

2)取消不要输出的项目

3)安全监测,在/var/log/cron线面查看木马

4)周与日月不可共存

10.anacron:处理非24小时一直启动的linux系统的crontab的执行,所以anacron并不能指定合适执行某项任务,而是以天为单位或者是在开机后立即进行anacron的动作,他会去侦测停机期间应该进行但是没有进行的crontab任务,并将该任务执行一遍后,anacron就会自动停止了。

anacron其实是一只程序,而不是一个服务。

11.anacron [-sfn] [job];anacron -u [job]:参数,

1)开始一连续的执行各项工作(job),会依据时间记录文件的数据判断是否进行

2)-f:强制进行,而不去判断事件记录文件的时间戳

3)-n:立刻进行未进行的任务,而不延迟等待时间

4)-u:仅更新时间记录文件的时间戳,不进行任何工作

5)job:有/etc/anacrontab定义的各项工作名称

12.当我们下达anacron指令后,它会运作:

1)由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天

2)由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳

3)由上个步骤与目前的时间比较,若差异天数为设定的天数以上(包含这一天,/etc/anacrontab的第一个参数)就准备进行该指令

4)若准备进行指令,根据/etc/anacrontab的设定,将延迟设定的分钟数(/etc/anacrontab的第二个参数)

5)延迟时间过后,开始执行后续指令,亦即,run -parts 后面的指令

6)执行完毕,anacron程序结束

13.chkconfig --list anacron:查看anacron是否开机事主动执行。

时间: 2024-10-12 17:53:27

linux例行性工作排程的相关文章

Linux例行性工作排程 (crontab)

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

第十六章、例行性工作排程 (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. 可唤醒停机期

例行性工作排程 (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. 可唤醒停机期间的工

例行性工作 排程(crontab)

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

2018-04-19 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第15章 例行性工作排程 笔记

第三版的15章在第四版pdf上看,之后都在第四版pdf上看.第四版和第三版章节号不一样,从此日开始以第四版记录笔记 at新进程都在/var/spool/at/目录下/etc/at.allow/etc/at.deny cron(crond)系统crontab命令/var/spool/cron/"$用户名"    进程文件/etc/crontab        系统进程文件/usr/bin/crontab        crontab命令的执行文件/etc/cron.allow      

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

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

Linux-例行性工作排程

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

浅谈 linux 例行性工作 crontab (linux定时任务)

定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工作 两种方式, 主要有两种: at   (和下面一样,只是它只定时执行一次就结束) crontab 演示定时执行php程序将数据插入数据库: 一个案例表:blog 1 CREATE TABLE `blog` ( 2 `blog_id` int(10) unsigned NOT NULL AUTO_I

Linux:例行性工作

什么是例行性工作? 其实对于例行性工作而言就是在当前环境下周期性进行的必须工作. 在Linux下,有2种例行性工作种类: 一种是突发性,做完以后就没有的那种 at:at是个可以处理仅执行一次就结束调度的命令,不过要执行at,必须要有atd这个服务. 在某些Linux版本中这个服务项目不是默认开启的,所以我们需要对这个服务进行开启. 另外一种是例行性的,就是每隔一定的周期要来办的事项: crontab:crontab这个命令锁设置的工作将会循环一直进行下去.可循环的时间为分钟.小时.每周.每月或每