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所示。

图2-1 Cron 服务结构

与此同时,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 通过 ntsysv 查看 Cron 服务是否设为开机自启

2.2.2 Cron 名单

为了提高安全性,可以通过修改 Cron 的名单文件,允许或限制特定用户使用 Cron 服务。涉及 Cron 的名单文件有两个,详情请见下表。

表2-1 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配置文件地址]

参数说明

表2-2 Crontab 命令参数
参数 说明
-u 指定要设置计划任务的用户;如果不指定该参数,将设置为操作者本人
-l 显示该用户的计划任务设置
-r 删除该用户的计划任务设置
-e 编辑该用户的计划任务设置

当用户创建一个新的 Crontab 文件时,其每一行都代表一项任务,总共分为6个字段,前5段为时间设定段(遵循Cron表达式),第六段为要执行的命令段,格式如下:

minute   hour   day   month   week   command

字段说明如表2.-3 字段说明所示。

表2.-3 字段说明
字段 说明
Minute 分钟 表分钟,取值为整数0~59
Hour 小时 表小时,取值为整数0~23
Day 日期 表日期,取值为整数1~31
Month 月份 表月份,取值为整数1~12
Week 周 表星期几,取值为整数0~7 (这里的0和7均表示星期天)
Command 要执行的命令或者是编写好的脚本文件

注意:周与日、月不可同时并存。(存在同日同月但不同星期的情况)

在前5个表示时间的字段中,还可以使用下列4种特殊符号,但是不能留空。

表2-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 虚拟机,其主要参数如下表。

表3-1 虚拟机配置参数
项目 配置
处理器 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所示。

图3-1 登录环境

为了方便管理,这里采用脚本的方式来执行计划任务。
在root的家目录创建名为clean_rc.sh文件。

vi /root/clean_rc.sh

在该文件中写入以下内容,保存并退出编辑器,如图3-2所示。

#!/bin/bash
echo 1 > /proc/sys/vm/drop_caches

图3-2 Crontab文件的编辑界面

给予clean_rc.sh文件执行权限。

chmod 755 /root/clean_rc.sh

赋予权限后如图3-3所示。

图3-3 查看脚本文件的权限情况。

使用Crontab命令,为root用户设定计划任务,如图3-4所示。

crontab -u root -e

添加以下内容,保存并退出。

0 0 * * * /root/clean_rc.sh

保存好计划任务后,会提示已安装新的 Crontab 文件。

图3-4 配置并安装计划任务脚本(root用户)

使用Crontab -u root -l 查看root用户的计划任务配置,如图3-5所示。

图3-5 查看root用户的计划任务配置

至此,项目操作完成。

3.2.3 项目验证

打开系统,进入终端,使用root用户修改时间(在当日23:59:59之前)。

date -s “20210608 23:59:00”

在当日的23:59:59之前输入free -m查看内存使用量,如图3-6所示。

图3-6 计划任务开始前的内存使用量

等到次日凌晨0点,再次输入free -m查看内存使用量,发现可用内存有所增加,如图3-7所示。

图3-7 计划任务生效后内存的使用量

制作成员: 陈诺
排版: 裕新
初审: 杨佳佳
复审: 二月二


点击下方“正月十六工作室”查看更多学习资源

正月十六工作室

Linux CentOS 8(计划任务_Cron)相关推荐

  1. windows兼容Linux php,支持windows与linux的php计划任务的实现方法

    本文实例讲述了支持windows与linux的php计划任务的实现方法.包括了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现.分享给大家供大家参考.具 ...

  2. Linux(CentOS)安装分区方案

    为什么80%的码农都做不了架构师?>>>    Linux(CentOS)安装分区方案 /boot(不是必须的):/boot分区用于引导系统,它包含了操作系统的内核和在启动系统过程中 ...

  3. linux的周期计划任务叫atd,linux计划任务

    一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...

  4. Linux进程与计划任务

    Linux进程与计划任务 linux进程及作业管理 进程 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等特权操作 模式切换(理想状态):70%CPU时间用户模式+30%CPU ...

  5. Linux系统中计划任务及其相关命令操作(at和crontab)

    Linux系统中计划任务分为两种类型,一种是一次性的计划任务--at,一种是长期性计划任务--crontab,接下来分别讲述它们的作用及其使用场景. 目录 at:一次性计划任务 crontab:长期性 ...

  6. mysql linux centos 安装_Linux centos 下在线安装mysql

    1,查看是否有安装过mysql: #rpm -qa | grep mysql 如果无结果返回,说明没有安装Mysql,可以全新安装. 2,查看在线服务器提供的Mysql相关的安装包有哪些: #yum ...

  7. Linux / CentOs 7搭建DHCP服务

    在前面介绍了怎么在Windows server 2016中搭建DHCP服务, 我们今天介绍如何在Linux / CentOS 7操作系统中搭建DHCP服务? 跟在Windows server 2016 ...

  8. 我的Linux成长路---001 Linux学习初期计划

    Linux学习初期计划 1.Linux基础 Linux历史.Linux版本.Linux安装.shell命令 2.Linux系统管理 用户管理.文件权限管理.磁盘管理.进程管理.自动化任务.安装程序.. ...

  9. Linux/CentOS优化配置 汇总

    [强烈要求做的]CentOS启用sudo,禁用root远程登录 修改Linux的 SSH 远程连接 端口 技巧 Linux命令行修改IP.网关.DNS.主机名 的方法 Linux/CentOS服务器 ...

最新文章

  1. Python炫技操作:模块重载的五种方法
  2. @Aspect注解无效
  3. JMeter集合点功能的使用
  4. c++ arm 图像处理_方案解析丨如何在ARM平台搭建超声波无损探伤系统
  5. Go语言中使用SQLite数据库
  6. java计算交点高程_javascirpt怎样模仿块级作用域(js高程笔记)
  7. Windows 无法访问指定设备、路径或文件
  8. 聚合直播,直播接口的使用
  9. 微信公众号跳转H5页面-用户授权-返回openId以及access_token
  10. 新品成熟EMR源码电子病历系统软件NET网络版CS可用带数据库全文档
  11. 域名证书续期 SSL证书如何续费
  12. sqlite引用SQLite.Interop.dll出错
  13. 【UE】三步创建自动追踪自爆可造成伤害的敌人
  14. 算法之递归和循环比较
  15. Laya---竖向滚动列表
  16. 计算机导论未来规划,计算机导论论文-论对软件专业的认识和对未来四年的规划...
  17. Android studio 实现打电话发短信浏览网页功能 android开发小实验
  18. 欧洲语言测试A1到C2,德语欧标:学到A1水平是什么样的程度?
  19. 【电力电子技术DC-AC】单相方波逆变电路 Simulink仿真
  20. 腾讯安心生态联盟正式成立 联动伙伴开放技术助力“数字兴农”

热门文章

  1. 银行、证券行业云计算身份识别服务器深度开发
  2. Vray植物场景表现思路解析蓝海创意云分享
  3. 探索格式塔心理学法则:打造令人愉悦的界面设计!
  4. 定义一个正整数的数组arr,删除arr数组中指定索引的元素,删除元素后面的元素需要往前移动,并且最后的索引位置用-1补上
  5. 关于移动web手机端返回键直接退出的问题
  6. ionic之快速启程(ionic-creator ionic-lab)[附下载地址]
  7. android 游戏 锁屏界面开发,android 锁屏程序开发
  8. IP地址与DNS之间的关系——真正理解DNS
  9. 某个网站(比如CSDN、GitHub)突然打开、加载很慢,有些途径访问正常、其他网站访问正常,可尝试指定域名服务器的IP地址,不走DNS查询。
  10. android+振动器权限,android振动器(Vibrator)