Linux之计划任务

一、什么是计划任务

如果想要让自己设计的备份程序可以自动地在系统下面运行,而不需要手动来启动它,这是该如何处理?这些任务可以分为【单一】任务和【循环】任务,在系统内又是哪些服务在负责?有的工作是例行性的,而有些任务是临时发生的。但是计算机不在身边这时就可以使用计划任务(corntable)来实现。

1、linux计划任务的种类(定时执行) :at、corn

①、at:at是一个仅可以执行一次就结束的命令,不过要执行at时,必须要有atd这个服务【可以使用“service atd status” 来查看是否运行】

②、crontab:crontab这个命令所设置的任务会一直执行下去,可设置循环时间(秒、分钟、小时、周、月、年等)。crontab除了可以使用命令执行外,也可以变价 /etc/crontab 来支持,让 crontab 可以生效的服务则是 crond

2、CenterOS LInux 系统上常见的一些例行性工作

①、执行日志文件的论循:linux会主动记录下系统所发生的的各种信息,即日志文件。这就是 logrotate 任务,也是系统必要的例行任务

②、日志文件分析 logwatch 的任务:CenterOS提供了一个程序【logwatch】来主动分析登录信息,所有会发现,你的root老是会收到 logwatch 为标题的邮件。

③、建立 locate 的数据库:系统的计划任务所产生的效果,系统会主动地执行 updatedb

④、manpage查询数据库的建立:课提供快速查询的 manpagedb 数据库,但是必须要执行 mandb 才能够建立。

⑤、RPM软件日志文件的建立:由于系统会常常变更软件,会造成软件安装文件名的差异。为了方便追踪,系统会帮我们将文件名作个排序的记录

⑥、删除缓存:某些软件运行会产生一些缓存,但是关闭软件之后,缓存未被清除。为了避免这些缓存将磁盘容量消耗光,系统会通过计划任务执行名为 tmpwatch 的命令来删除这些缓存

⑦、与网络服务有关的分析操作:如果你安装了类似网站服务器的软件(例如你安装了Apache),那么你的Linux系统通常就会主动分析该软件的日志文件。同时某些凭证与认证的网络信息是否过期问题,Linux也会执行自动检测。

二、仅执行一次的计划任务

1、atd的启动与at运行的方式

启动atd服务
语法:service atd start
在这里插入图片描述
事实上,我们使用 at 这个命令来产生所要运行的任务,并将这个任务以文本文件的方式写入 /var/spool/at/ 目录内,该任务就可以等待 atd 服务的使用和执行了。

我么你可以利用 /etc/at.allow(写在该文件中的用户允许使用 at) 和 /etc/at.deny(写在该文件中的用户不允许使用 at) 这两个文件来实现对at的使用限制。

注意:如果两个文件都不存在,则只有root才可以使用at。

2、实际运行单一计划任务
语法:at [-mldv] TIME
语法:at -c 任务号码

“-m”:当 at 任务完成后,即使没有输出信息,也可以发出 email 通知使用者该任务已完成。
“-l”:相当于atq,列出目前系统上面所有该使用者的 at 计划。
“-d”:相当于atrm,可以取消一个在 at 任务中的计划。
在这里插入图片描述

“-v”:使用较明显的时间格式列出 at 计划中的任务列表。
“-c”:可以列出后面接的该项任务的实际命令内容。
TIME:时间格式有“HH:MM”;“HH:MM YYYY-MM-DD”;“HH:MM[am|pm] + number [minutes|hours|days|weeks](表示在某个时间点【再加几个时间后】才执行),例如:now + 5 minutes ; 04pm + 3 days”。

案例一:五分钟后,将 /root/.bashrc 发给 root 自己
在这里插入图片描述
注意:执行 at 会进入 at shell 环境,让你执行多重命令等待运行。

案例二、查看刚刚执行的内容
在这里插入图片描述
①、batch:系统有空时才执行后台任务
它是 在CPU的任务负载小于0.8的时候,才执行后续的工作任务负载的意思是:CPU在单一时间点所负责的任务数量,而不是CPU的使用率
也就是说,CPU的任务负载大,代表CPU必须要在不同的任务之间执行频繁的任务切换。如果一直切换任务,会导致系统忙绿。系统如果忙碌,还去执行 at 命令,不太合理,所有才有了 batch 。

三、循环执行的计划任务

循环任务由 cron (crond)这个系统服务来控制的,Linux也提供用户控制计划任务的命令(crontab)(定时执行)。

1、用户的设置

为了限制 crontab 的账号使用,可以使用以下配置文件(建议保留一个文件即可):
①、/etc/cron.allow(优先级高)
将可以使用crontab的账号写入其中,不在这个文件内的用户则不可以使用crontab。
②、/etc/cron.deny
将不可以使用crontab的账号写入其中,不在这个文件中的用户就可以使用crontab。

当用户使用 crontab 这个命令来建立计划任务之后,该项任务就会被记录到 /var/spool/cron/ 中,而且是以账号来作为判断根据的。注意:不要使用 vi 来直接编辑该文件,英文可能由于输入语法错误,会导致无法执行 cron

语法:crontab [-u username] [-l] [-e] [-r]
“-u”:只有root才能执行这个任务,亦即帮其他使用者建立/删除crontab计划任务
“-e”:编辑crontab的任务内容
“-l”:查看crontab的任务内容
“-r”:删除所有crontab的任务内容,若要删除一行,请使用-e去编辑

取值范围:
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7,0和7表示星期天

符号:
“ * ”:表示取值范围的每一个数字
“ - ”:做区间表达式,例如:1-7表示1~7
“ / ”:表示每多少个,例如*/10表示每10分钟执行1次
“ , ”:表示多个取值,例如1,2,6表示多个点执行

案例三:在指定时间执行特定的计划任务
语法:crontab -e ;进入编辑页面编辑任务,注意:每一行都是一项任务。
【0 12 * * * mail -s “at 12:00” linux123 < /home/linux123/.bashrc】
分、时、日、月、周、命令串(个人配置可以修改 /etc/crontab

案例四:每月1、10、22日的下午4:45重启network服务
语法:45 16 1,10,22 * * service network restart

案例五:每天18:00至23:00之间每隔30分钟重启network服务
语法:*/30 18-23 * * * service network restart

案例六:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
语法:*3,15 8-11 /2 * * reboot

四、可唤醒停机期间的工作任务

如果记不起某个特别重要的命令要执行的时候,可以使用 anacron(一个程序,而不是服务) 这个命令的功能,可以主动帮我们执行时间到了但是没有执行的计划任务主要用于处理非24小时运行的Linux系统所执行的crontab,以及因为某些原因导致超过时间而没有被执行的任务。

1、anacron(定期执行
配置文件位置: /etc/cron.hourly/0anacron
在这里插入图片描述0表示最先执行,让时间戳先更新,避免误判crontab尚未执行任何任务

语法:anacron [-sfn] [job]
语法:anacron -u [job]

“-s”:开始连续地执行各项任务(job),根据时间记录文件的数据判断是否执行
“-f”:(force)强制执行
“-n”:立即执行未执行的任务,而不延迟(delay)等待时间
“-u”:仅更新时间记录文件的时间戳,不执行任何任务
job:由 /etc/anacrontab 定义的各项任务名称

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值