Linux CentOS 8(计划任务_Cron)
Linux CentOS 8(计划任务_Cron)
目录
- 1. 常见的计划任务
- 2. 了解 Cron
- 2.1 Cron 的结构
- 2.2 Cron 的使用
- 2.2.1 Cron 服务
- 2.2.2 Cron 名单
- 2.2.3 Crontab 命令
- 2.2.4 创建或编辑 Crontab 文件
- 2.2.5 Crontab 文件示例
- 3. 操作示例
- 3.1 操作平台
- 3.2 项目:通过Cron清除缓存
- 3.2.1 项目要求
- 3.2.2 项目操作
- 3.2.3 项目验证
1. 常见的计划任务
在Linux系统中,常见的能实现定时任务的软件有 at、cron 和 anacron。
其中,各个服务有其独特的点:
At:适合仅执行一次就结束的调度命令,需要在后台启动守护进程atd;
Cron:适合脚本、单句命令的调度,需要在后台启动守护进程Crond,并通过Crondtab命令实现;
Anacron:适合实现以天为周期,在关机状态下未执行的任务可在开机后继续执行。
当然,计划任务通常由 Cron 服务接管,本文将着重介绍 Cron 服务。与 Windows 下的计划任务相类似,在操作系统安装后,默认会安装此服务工具,且会自启守护进程(Crond),定期检查并按照配置文件执行计划好的任务。
2. 了解 Cron
2.1 Cron 的结构
当 Cron 守护进程(Crond)启动后,会先在 /var/spool/cron
目录中检查用户配置文件的存在(以/etc/passwd
文件中的用户名命名)。如果找到 Crontab 配置文件,则将此文件载入内存中,由Cron调度进程(Crontab)读取后进行调度,执行相应的任务;如果没有找到 Crontab 配置文件,则 Crond 守护进程将会进入“休眠”状态,释放后台资源,减小系统开销,如图2-1所示。
与此同时,Cron 守护进程会在每分钟自动唤醒一次,当 Cron 调度进程中的时间日期与系统时间日期相吻合时,就会执行相应的Cron 任务。执行完成后,任何输出(例如计划任务的执行结果等)都将会推送至设定该 Cron 任务的所有者,或是 Cron 调度进程中 MAILTO 环境变量的指定用户。
因此,Cron 服务无需用户干预,只需用户创建编辑 Crontab 配置文件即可。
2.2 Cron 的使用
2.2.1 Cron 服务
常规的控制命令
systemctl start crond //启动Crond服务
systemctl stop crond //停止Crond服务
systemctl reload crond //重载Crond服务
systemctl restart crond //重启Crond服务
设置 Cron 服务开机自启
Systemctl enable crond
检查 Cron 是否已设置为开机自启
ntsysv //用于设置系统的各种服务的软件
如果 Cron 服务已设为开机自启,则输入上述命令的情况,如图2-2所示。
2.2.2 Cron 名单
为了提高安全性,可以通过修改 Cron 的名单文件,允许或限制特定用户使用 Cron 服务。涉及 Cron 的名单文件有两个,详情请见下表。
类别 | 文件绝对路径 | 优先级 | 作用 |
---|---|---|---|
白名单 |
/etc/cron.allow
|
高 | 只有在该文件内写入的用户才能使用Cron服务 |
黑名单 |
/etc/cron.deny
|
其次 | 在该文件内写入的用户,将无法使用Cron服务 |
通过表格归纳,我们发现Cron的白名单要比黑名单优先;一般来说,建议保留一个名单即可(然而系统默认是保留黑名单,即 /etc/cron.deny
文件)。
2.2.3 Crontab 命令
通过上文了解,我们知道了 Cron 服务的用户 Crontab 配置文件默认目录位于/var/spool/cron
,且每个用户均可配置;但是用户并不能直接配置上述文件,这需要使用到 Crontab 命令。
Crontab 命令的格式如下所示。
Crontab [参数(-u <用户名>|-l|-r|-e)] [Crontab配置文件地址]
参数说明
参数 | 说明 |
---|---|
-u | 指定要设置计划任务的用户;如果不指定该参数,将设置为操作者本人 |
-l | 显示该用户的计划任务设置 |
-r | 删除该用户的计划任务设置 |
-e | 编辑该用户的计划任务设置 |
当用户创建一个新的 Crontab 文件时,其每一行都代表一项任务,总共分为6个字段,前5段为时间设定段(遵循Cron表达式),第六段为要执行的命令段,格式如下:
minute hour day month week command
字段说明如表2.-3 字段说明所示。
字段 | 说明 |
---|---|
Minute 分钟 | 表分钟,取值为整数0~59 |
Hour 小时 | 表小时,取值为整数0~23 |
Day 日期 | 表日期,取值为整数1~31 |
Month 月份 | 表月份,取值为整数1~12 |
Week 周 | 表星期几,取值为整数0~7 (这里的0和7均表示星期天) |
Command | 要执行的命令或者是编写好的脚本文件 |
注意:周与日、月不可同时并存。(存在同日同月但不同星期的情况)
在前5个表示时间的字段中,还可以使用下列4种特殊符号,但是不能留空。
特殊符号 | 说明 | 举例 |
---|---|---|
* 星号 | 代表所有可能的值 | “* * * * *” 表示每分钟执行一次 |
, 逗号 | 可以用逗号隔开的值指定一个列表范围 | “1,2,5,7,8,9” |
- 中杠 | 可以在整数间用中杠指定一个区间范围 | “2-6” 表示 “2,3,4,5,6” |
/ 正斜线 | 可以用正斜线指定时间的间隔频率 | “0-23/2“ 表示每两小时执行一次 |
2.2.4 创建或编辑 Crontab 文件
在CentOS 8.2中,默认情况下,Crontab 命令会调用VI编辑器,进行 Crontab 文件的创建或编辑操作。也因此,操作与常规使用VI编辑器一致,例如:按 i
输入,按 ESC键 退出输入模式,按 :x
回车保存,按ESC键再输入 :wq
后回车保存并退出。
2.2.5 Crontab 文件示例
参照上文 Crontab 命令的使用方法,创建一个 Crontab 文件;需要注意的是,每项工作都是一行,例子如下:
示例1:每分钟都执行一次 /bin/ls
* * * * * /bin/ls
示例2:每隔2小时20分钟,执行一次 echo "Jan16 Official"
20 0-23/2 * * * echo “Jan16 Official”
示例3:每月12号和24号的凌晨零点,重启Apache服务
0 0 12,24 * * /sbin/service httpd restart
提示:当任务在指定时间执行后,系统会发送一个信息给当前的用户,显示该任务的内容;若你不想收到这样的信息,请在每一行空一格之后加上 > /dev/null 2>&1
即可。
例如,在示例3的基础上添加以下文本:
0 0 12,24 * * /sbin/service httpd restart > /dev/null 2>&1
这样,当Cron服务执行完成后,不再发送该信息。
3. 操作示例
3.1 操作平台
本操作示例将以CentOS 8.2为模板,在X86-64平台上,使用 VMware 虚拟机,其主要参数如下表。
项目 | 配置 |
---|---|
处理器 | 1核心 |
内存 | 2GB |
硬盘 | 12GB |
网络 | NAT |
3.2 项目:通过Cron清除缓存
3.2.1 项目要求
某公司新增了Linux服务器,需要配置周期性任务,具体要求如下:
为root账户设定每日凌晨0点准时执行清除页面缓存的指令。
注: 清除页面缓存的指令为:echo 1 > /proc/sys/vm/drop_caches
3.2.2 项目操作
首先打开系统,进入终端,以root的身份进行配置,如图3-1所示。
为了方便管理,这里采用脚本的方式来执行计划任务。
在root的家目录创建名为clean_rc.sh
文件。
vi /root/clean_rc.sh
在该文件中写入以下内容,保存并退出编辑器,如图3-2所示。
#!/bin/bash
echo 1 > /proc/sys/vm/drop_caches
给予clean_rc.sh文件执行权限。
chmod 755 /root/clean_rc.sh
赋予权限后如图3-3所示。
使用Crontab
命令,为root用户设定计划任务,如图3-4所示。
crontab -u root -e
添加以下内容,保存并退出。
0 0 * * * /root/clean_rc.sh
保存好计划任务后,会提示已安装新的 Crontab 文件。
使用Crontab -u root -l
查看root用户的计划任务配置,如图3-5所示。
至此,项目操作完成。
3.2.3 项目验证
打开系统,进入终端,使用root用户修改时间(在当日23:59:59之前)。
date -s “20210608 23:59:00”
在当日的23:59:59之前输入free -m
查看内存使用量,如图3-6所示。
等到次日凌晨0点,再次输入free -m
查看内存使用量,发现可用内存有所增加,如图3-7所示。
制作成员: 陈诺
排版: 裕新
初审: 杨佳佳
复审: 二月二
点击下方“正月十六工作室”查看更多学习资源
正月十六工作室
Linux CentOS 8(计划任务_Cron)相关推荐
- windows兼容Linux php,支持windows与linux的php计划任务的实现方法
本文实例讲述了支持windows与linux的php计划任务的实现方法.包括了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现.分享给大家供大家参考.具 ...
- Linux(CentOS)安装分区方案
为什么80%的码农都做不了架构师?>>> Linux(CentOS)安装分区方案 /boot(不是必须的):/boot分区用于引导系统,它包含了操作系统的内核和在启动系统过程中 ...
- linux的周期计划任务叫atd,linux计划任务
一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...
- Linux进程与计划任务
Linux进程与计划任务 linux进程及作业管理 进程 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等特权操作 模式切换(理想状态):70%CPU时间用户模式+30%CPU ...
- Linux系统中计划任务及其相关命令操作(at和crontab)
Linux系统中计划任务分为两种类型,一种是一次性的计划任务--at,一种是长期性计划任务--crontab,接下来分别讲述它们的作用及其使用场景. 目录 at:一次性计划任务 crontab:长期性 ...
- mysql linux centos 安装_Linux centos 下在线安装mysql
1,查看是否有安装过mysql: #rpm -qa | grep mysql 如果无结果返回,说明没有安装Mysql,可以全新安装. 2,查看在线服务器提供的Mysql相关的安装包有哪些: #yum ...
- Linux / CentOs 7搭建DHCP服务
在前面介绍了怎么在Windows server 2016中搭建DHCP服务, 我们今天介绍如何在Linux / CentOS 7操作系统中搭建DHCP服务? 跟在Windows server 2016 ...
- 我的Linux成长路---001 Linux学习初期计划
Linux学习初期计划 1.Linux基础 Linux历史.Linux版本.Linux安装.shell命令 2.Linux系统管理 用户管理.文件权限管理.磁盘管理.进程管理.自动化任务.安装程序.. ...
- Linux/CentOS优化配置 汇总
[强烈要求做的]CentOS启用sudo,禁用root远程登录 修改Linux的 SSH 远程连接 端口 技巧 Linux命令行修改IP.网关.DNS.主机名 的方法 Linux/CentOS服务器 ...
最新文章
- Python炫技操作:模块重载的五种方法
- @Aspect注解无效
- JMeter集合点功能的使用
- c++ arm 图像处理_方案解析丨如何在ARM平台搭建超声波无损探伤系统
- Go语言中使用SQLite数据库
- java计算交点高程_javascirpt怎样模仿块级作用域(js高程笔记)
- Windows 无法访问指定设备、路径或文件
- 聚合直播,直播接口的使用
- 微信公众号跳转H5页面-用户授权-返回openId以及access_token
- 新品成熟EMR源码电子病历系统软件NET网络版CS可用带数据库全文档
- 域名证书续期 SSL证书如何续费
- sqlite引用SQLite.Interop.dll出错
- 【UE】三步创建自动追踪自爆可造成伤害的敌人
- 算法之递归和循环比较
- Laya---竖向滚动列表
- 计算机导论未来规划,计算机导论论文-论对软件专业的认识和对未来四年的规划...
- Android studio 实现打电话发短信浏览网页功能 android开发小实验
- 欧洲语言测试A1到C2,德语欧标:学到A1水平是什么样的程度?
- 【电力电子技术DC-AC】单相方波逆变电路 Simulink仿真
- 腾讯安心生态联盟正式成立 联动伙伴开放技术助力“数字兴农”
热门文章
- 银行、证券行业云计算身份识别服务器深度开发
- Vray植物场景表现思路解析蓝海创意云分享
- 探索格式塔心理学法则:打造令人愉悦的界面设计!
- 定义一个正整数的数组arr,删除arr数组中指定索引的元素,删除元素后面的元素需要往前移动,并且最后的索引位置用-1补上
- 关于移动web手机端返回键直接退出的问题
- ionic之快速启程(ionic-creator ionic-lab)[附下载地址]
- android 游戏 锁屏界面开发,android 锁屏程序开发
- IP地址与DNS之间的关系——真正理解DNS
- 某个网站(比如CSDN、GitHub)突然打开、加载很慢,有些途径访问正常、其他网站访问正常,可尝试指定域名服务器的IP地址,不走DNS查询。
- android+振动器权限,android振动器(Vibrator)