计划任务

计划任务分为两种:

1.突发性的任务,只执行一次,使用at

2.例行性的任务,循环执行,使用crontab

一、at

需要atd服务的支持。

sudo apt install at//Ubuntu需要安装atd服务

systemctl restart atd 重新启动atd服务

systemctl enable atd 开机自启动atd

systemctl status atd 查看一下atd目前的状态

atd的运行方式

at命令来产生计划任务,并将这个任务以文本文件的形式写入/var/spool/at目录内

使用/etc/at.allow与/etc/at.deny来限制at命令

1)先判断/etc/at.allow这个文件是否存在,若存在只有写在这个文件中的用户才能使用at,否则不能使用(即使该用户没有写在at.deny中)。

2)若/etc/at.deny不存在,就查找/etc/at.deny文件,在该文件中出现的用户不能使用at,没有在这个文件中出现的用户可以使用at

3)若两个文件都不存在,则只有root可以使用at这个命令。

Cracker程序往往会利用计划任务来执行或搜集系统消息并定时返回给Cracker团体。

at的优点:可以将at任务独立出你bash环境,直接交给atd程序来接管。

二、contab

需要cron服务的支持

其中/etc/cron.allow与/etc/cron.deny与at类似

crontab命令来产生计划任务,并将这个任务以文本文件的形式写入/var/spool/cron目录内,而且是以账号作为判断依据的。例如:dmtsai使用crontab之后,它的任务会被记录到/var/spool/cron/dmtsai中。

不要使用vi直接编辑该文件,可能会由于输出语法的错误导致无法执行cron。使用crontab -e来添加例行任务

cron执行的每个任务会被记录到/var/log/cron这个日志文件中,是否被植入木马程序可以在这里看到。

在周的那个数字中0和7都是周日的意思

crontab -e是针对用户的cron来设计的,如果执行系统的例行性任务只需编辑/etc/crontab这个文件就行。

crontab -e这个crontab其实是/usr/bin/crontab这个执行文件,但是/etc/crontab是一个纯文本文件。

cron服务读取配置文件的位置

一般来说,crond默认会有三个地方执行脚步配置文件:

/etc/crontab

/etc/cron.d/*

/var/spool/cron/*

和系统运行有关系的两个配置文件是/etc/crontab文件以及/etc/cron.d/*目录内的文件,

用户自己的任务有关系的配置文件是/var/spoll/cron/内的文件。

总结:

1)个人化的行为使用『 crontab -e 』
如果你是依据个人需求来建立的例行工作排程,建议直接使用 crontab -e来建立你的工作排程较佳! 这样也能保障你的指令行为不会被大家看到 (/etc/crontab 是大家都能读取的权限喔!);

2)系统维护管理使用『 vim /etc/crontab 』
如果你这个例行工作排程是系统的重要工作,为了让自己管理方便,同时容易追踪,建议直接写入 /etc/crontab 较佳!

3)自己开发软件使用『 vim /etc/cron.d/newfile 』:如果你是想要自己开发软件,那当然最好就是使用全新的配置文件,并且放置于 /etc/cron.d/ 目录内即可。

4)固定每小时、每日、每周、每天执行的特别工作:如果与系统维护有关,还是建议放置到 /etc/crontab 中来集中管理较好。 如果想要偷懒,或者是一定要再某个周期内进行的任务,也可以放置到上面谈到的几个目录中,直接写入指令即可!

需要注意

1)资源分配

2)利用数据流重定向,将不需要的结果输出到/dev/null垃圾桶中

3)周与日月不可以共存

三、anacron

anacron的存在是为了处理非24小时运行的Linux系统所执行的crontab,以及由于某些原因导致的超过时间而没有被执行的任务

anacron本质上是一个程序并非服务。

该程序是会周期执行的,会存在于/etc/cron.hourly或/etc/cron.daily或/etc/cron.monthly或/etc/weekly中。

Ubuntu中,anacron最快每一天执行一次,其配置文件不放置在/etc/cron.hourly中。但是在CentOS中就是存在于/etc/cron.houly中,会每小时执行一个anacron。

anacron的配置文件是/etc/anacrontab

 

总结:

1)crond会主动读取/etc/crontab、/var/spool/cron/*、/etc/cron.d/*等配置文件,并根据分、时、日、月、周的时间去配置各项计划任务;

2)根据/etc/cron.d/0hourly的设置,主动去/etc/cron.hourly/目录下,执行所有在该目录下的执行文件;(在Ubuntu下是没有0hourly该文件,/etc/cron.hourly/下是没有任何文件的)

3)因为/etc/cron.hourly/0anacron这个脚本的缘故,主动地每小时执行anacron,并调用/etc/anacrontab的配置文件;

4)根据/etc/anacrontab的设置,根据每天,每周,每月地去分析/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/内的执行文件,以执行固定周期需要执行的命令。

所以在/etc/crontab中放置的操作,一旦过期了,并不会重新执行;但是/etc/cron.weekly/目录下,那么该任务就会固定一周内执行一次。


参考《鸟哥的Linux私房菜》第四版

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值