15.3 【Linux】循环执行的例行性工作调度

简介: 15.3 【Linux】循环执行的例行性工作调度

相对于 at 是仅执行一次的工作,循环执行的例行性工作调度则是由 cron (crond) 这个系统服务来控制的。刚刚谈过 Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以进行例行性工作调度,所以, Linux 也提供使用者控制例行性工作调度的指令 (crontab)。


15.3.1 使用者的设置

使用者想要创建循环型工作调度时,使用的是 crontab 这个指令。不过,为了安全性的问题, 与 at 同样的,我们可以限制使用 crontab 的使用者帐号。使用的限制数据有:


/etc/cron.allow: 将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab;


/etc/cron.deny: 将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab 。


与 at 很像吧!同样的,以优先顺序来说, /etc/cron.allow 比 /etc/cron.deny 要优先, 而判断上面,这两个文件只选择一个来限制而已,因此,建议你只要保留一个即可, 免得影响自己在设置上面的判断!一般来说,系统默认是保留 /etc/cron.deny , 你可以将不想让他执行crontab 的那个使用者写入 /etc/cron.deny 当中,一个帐号一行。


当使用者使用 crontab 这个指令来创建工作调度之后,该项工作就会被纪录到/var/spool/cron/ 里面去了,而且是以帐号来作为判别的。举例来说, dmtsai 使用 crontab后, 他的工作会被纪录到 /var/spool/cron/dmtsai 里头去!但请注意,不要使用 vi 直接编辑该文件, 因为可能由于输入语法错误,会导致无法执行 cron 。另外, cron 执行的每一项工作都会被纪录到 /var/log/cron 这个登录文件中,所以,如果你的 Linux 不知道有否被植入木马时,也可以搜寻一下 /var/log/cron 这个登录文件。


默认情况下,任何使用者只要不被列入 /etc/cron.deny 当中,那么他就可以直接下达“ crontab-e ”去编辑自己的例行性命令了!整个过程就如同上面提到的,会进入 vi 的编辑画面, 然后以一个工作一行来编辑,编辑完毕之后输入“ :wq ”储存后离开 vi 就可以了! 而每项工作 (每行) 的格式都是具有六个字段,这六个字段的意义为:

代表意义

分钟

小时

日期

月份

指令

数字范围

0-59

0-23

1-31

1-12

0-7

比较有趣的是那个“周”。周的数字为 0 或 7 时,都代表“星期天”的意思!另外,还有一些辅助的字符,大概有下面这些:


例题:假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 发一封信给他,这封信的内容已经写在 /home/dmtsai/lover.txt 内了,该如何进行?答:直接下达 crontab -e 之后,编辑成为:

59 23 1 5* mail kiki < /home/dmtsai/lover.txt

那样的话,每年 kiki 都会收到你的这封信。

例题:假如每五分钟需要执行 /home/dmtsai/test.sh 一次,又该如何?答:同样使用 crontab-e 进入编辑:

*/5 * * * * /home/dmtsai/test.sh

那个 crontab 每个人都只有一个文件存在,就是在 /var/spool/cron 里面。

例题:假如你每星期六都与朋友有约,那么想要每个星期五下午 4:30 告诉你朋友星期六的约会不要忘记,则:答:还是使用 crontab -e 啊!

30 16 * * 5 mail friend@his.server.name < /home/dmtsai/friend.txt

相关文章
|
2月前
|
人工智能 算法 大数据
Linux内核中的调度算法演变:从O(1)到CFS的优化之旅###
本文深入探讨了Linux操作系统内核中进程调度算法的发展历程,聚焦于O(1)调度器向完全公平调度器(CFS)的转变。不同于传统摘要对研究背景、方法、结果和结论的概述,本文创新性地采用“技术演进时间线”的形式,简明扼要地勾勒出这一转变背后的关键技术里程碑,旨在为读者提供一个清晰的历史脉络,引领其深入了解Linux调度机制的革新之路。 ###
|
2月前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
75 4
|
2月前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
2月前
|
缓存 算法 Linux
Linux内核中的调度策略优化分析####
本文深入探讨了Linux操作系统内核中调度策略的工作原理,分析了不同调度算法(如CFS、实时调度)在多核处理器环境下的性能表现,并提出了针对高并发场景下调度策略的优化建议。通过对比测试数据,展示了调度策略调整对于系统响应时间及吞吐量的影响,为系统管理员和开发者提供了性能调优的参考方向。 ####
|
5月前
|
资源调度 监控 网络协议
在Linux中,如何进行系统资源调度?
在Linux中,如何进行系统资源调度?
|
5月前
|
监控 Linux 调度
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
|
5月前
|
存储 Linux API
Linux源码阅读笔记08-进程调度API系统调用案例分析
Linux源码阅读笔记08-进程调度API系统调用案例分析
|
5月前
|
负载均衡 算法 Linux
在Linux中,LVS的负载调度算法是什么?
在Linux中,LVS的负载调度算法是什么?
|
5月前
|
资源调度 监控 Linux
在Linux中,如何进行网络资源调度?
在Linux中,如何进行网络资源调度?
|
5月前
|
监控 Ubuntu Linux