Cron与At计划任务

Linux 计划任务的种类:at, cron

at :这个工作仅执行一次就从Linux 系统中的计划任务中取消

cron:这个工作将持续例行性的作下去

一、At

开启服务


at使用限制
利用/etc/at.allow与/etc/at.deny这两个档案来进行at 的使用限制,加上这两个档案后,at 的工作情况其实是这样的:
1. 先找寻/etc/at.allow这个档案,写在这个档案中的使用者才能使用at ,没有在这个档案中的使用者则不能使用at ( 即使没有写在at.deny当中);
2. 如果没有/etc/at.allow就寻找/etc/at.deny这个档案,若写在这个at.deny的使用者则不能使用at ,而没有在这个at.deny档案中的使用者,就可以使用at ;
3. 如果两个档案都不存在,那么只有root 可以使用at 这个指令。

其实我们只要有at.deny这个档案存在就好了,因为我们假设系统内的账号都是懂得操作的使用者,因此,预设让他们可以任意使用at 这个好用的东西!这也是系统的默认值。

at语法


at举例




atq和atrm
atq:查询当下有多少计划任务

atrm[jobnumber]:对任务进行删除



二、Crontab

相对于at 是仅执行一次的工作,循环执行的例行性命令则是由cron(crond) 这个系统服务来控制的。

由于系统预设就有相当多的例行性工作,因此,这个系统服务是预设启动的。另外,由于使用者自己也可以进行例行性工作排程,所以,Linux 也提供使用者控制例行性命令的指令(crontab)。

Crontab使用限制
/etc/cron.allow:
将可以使用crontab的账号写入其中,若不在这个档案内的使用者则不可使用crontab;
/etc/cron.deny:
将不可以使用crontab的账号写入其中,若未记录到这个档案当中的使用者,就可以使用crontab。

一般来说,系统预设是保留/etc/cron.deny,您可以将不想让他执行crontab的那个使用者写入/etc/cron.deny当中,一个账号一行!

Crontab语法




Crontab不执行问题总结
1 crond服务未启动
crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是启动服务:
/etc/init.d/crondrestart
2 权限问题
比如:脚本没有x执行权限,解决方法:
增加执行权限,或者用bash abc.sh的方法执行
3 路径问题
有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行
./test.sh

就可以了。但是在crontab中,就会找不到这个脚本,需要写完整/root/test.sh

系统的配置文件:/etc/crontab
这个『crontab-e 』是针对使用者的cron来设计的,如果是『系统的例行性任务』时,该怎么办呢?是否还是需要以crontab-e 来管理你的例行性计划任务呢?当然不需要,你只要辑/etc/crontab即可。
注意:crontab-e 这个crontab其实是/usr/bin/crontab这个运行档,而/etc/crontab可是一个纯文本文件,你可以root 的身份编辑一下这个文件。
cron这个服务的最低侦测限制是分钟,所以『cron会每分钟去读取一次/etc/crontab与/var/spool/cron里面的数据内容』,因此,只要你编辑完/etc/crontab这个文件,并且将他储存之后,那么cron的配置就自动的会来运行了。

注意:修改完/etc/crontab之后,可能并不会马上运行,这个时候请重新启动crond这个服务,『/etc/init.d/crondrestart』


这个/etc/crontab里面预配置义出四项工作任务,分别是每小时、每天、每周及每个月分别进行一次的工作!但是在五个栏位后面接的并不是命令,而是一个新的栏位,那就是『运行后面那串命令的身份』。这与使用者的crontab-e 不相同。由于使用者自己的crontab并不需要指定身份,但/etc/crontab里面要指定身份!以上表的内容来说,系统默认的例行性工作是以root 的身份来进行的。run-parts 是一个bash script ,会将后面接的『目录』内的所有文件拿出来运行,也就是说『如果你想让系统每小时主动帮你运行某个命令,将该命令写成script,并将该文件放置到/etc/cron.hourly/ 目录下即可』

/etc/crontab这个文件里面支持两种下达命令的方式:
一种是直接下达命令
一种则是以目录来规划
命令型态01 * * * * s mail -s “testing” kiki< /home/dmtsai/test.txt以s 这个使用者的身份,在每小时运行一次mail 命令。

目录规划*/5 * * * * root run-parts /root/runcron创建一个/root/runcron的目录,将要每隔五分钟运行的『可运行档』都写到该目录下,就可以让系统每五分钟运行一次该目录下的所有可运行档。

资源分配不均的问题
当大量使用crontab的时候,总是会有问题发生的,最严重的问题就是『系统资源分配不均』的问题,比如有侦测主机流量的需求,包括:
•流量
•区域内其他PC 的流量侦测
•CPU 使用率
•RAM 使用率
•线上人数即时侦测

如果每个流程都在同一个时间启动的话,那么在某个时段时,系统会变的相当的繁忙,所以,这个时候就必须要分别配置:


取消不要的输出项目
当有运行成果或者是运行的项目中有输出的数据时,该数据将会mail 给MAILTO 配置的帐号。
那么当有一个排程一直出错(例如DNS 的侦测系统当中,若DNS 上一级主机挂掉,那么你就会一直收到错误信息!)怎么办?

数据流重导向,直接以『命令重导向』将输出的结果输到/dev/null这个垃圾桶当中就好了!

安全的检验
很多时候被植入木马都是以例行命令的方式植入的,所以可以藉由检查/var/log/cron的内容来视察是否有非您配置的cron被运行了?
周与日月不可同时并存

你可以分别以周或者是日月为单位作为循环,但你不可使用几月几号且为星期几的模式工作。


猜你喜欢

转载自blog.csdn.net/swt097143/article/details/80010475