5.3 定时(计划)任务crontab

5.3.1 定时任务的概念

后台运行,到了预定的时间就会自动执行的任务,前提是需要事先手动将计划任务设定好。

  1. 周期性任务执行
  2. 清空/tmp目录下的内容
  3. mysql数据库备份
  4. Redis数据备份
5.3.2 定时任务的作用

操作系统不可能24小时都有人操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨2点去重新启动Apache)此时不可能真有人夜里2点去执行命令,这就可以交给定时任务程序去执行操作

5.3.3 crontab命令语法
语法:crontab [参数]
参数 说明
-l 列出指定用户的定时任务的列表
-e 编辑指定用户的定时任务列表,简单来说,定时任务就是一个文件
-u 指定的用户名,如果不指定,则表示当前用户
-r 删除指定用户的定时任务列表
5.3.4. crontab编辑语法
SHELL=/bin/bash  #定时任务,是帮我们去执行shell语句,因此必须加上bash解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin #crontab自己定义了PATH变量,写定时任务的命令必须是绝对路径不容易出错
MAILTO=root #定时任务执行后,会给系统用户发一个邮件 # For details see man 4 crontabs # Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
分 时 日 月 周

取值范围(常识):

分:0-59

时:0-23

日:1~31

月:1~12、

周:0~7、0和7表示星期天

四个字符:

* : 表示取值范围中的每一个数字

- : 做连续区间表达式的,想要表示1~2,则可以写成1-7

/ :表示每多少,例如,每10分钟一次,则可以写成 */10

, : 表示多个取值,比如在1点,2点,6点执行,则可以写成1,2,6

[!WARNING]

  1. 日期和周几不能同时写
  2. 定时任务要写绝对路径,命令的绝对路径和文件(脚本)的绝对路径
5.4.5 定时任务的编写流程
1.crontab -e 编辑定时任务

2.写入正确语法,使用绝对路径

3.crontab -l 查看定时任务

4.进行验证定时任务

5.定时任务写入后会在定时任务日志中记录,/var/spool/cron/[用户名],以用户名区分定时任务

案例236. 每月1、10、22日的4:45重启network服务

45  4  1,10,22  *  *  /user/bin/systemctl restart network

案例237. 每周六、周日的1:10分重启network服务

10  13  *  *  6,7  /user/bin/systemctl restart network

案例238. 每天18:00至23:00之间每隔30分钟重启network服务

*/30  18-23  *  *  *  /user/bin/systemctl restart network

案例239. 每隔两天的上午8点到11点的第3,15分钟执行一次network重启

3,15  8-11  */2  *  *  /user/bin/systemctl restart network

案例240. 每天凌晨整点重启nginx服务

0  0  *  *  *  /user/bin/systemctl restart nginx

案例241. 每周4凌晨2点15分执行命令

15  2  *  *  4  /user/bin/systemctl restart network

案例242. 工作日的9点到18点内的每小时整点执行脚本

0  9-18  *  *  1-5

案例243. 每1分钟向文件里写入一句话“云计算运维工程师”,且实时监控文件内容变化

*  *  *  *  *  /usr/bin/echo "云计算运维工程师" > /dev/null

案例244. 每天凌晨2点30分,执行ntpdate命令同步times.aliyun.com,并sys同步到硬件时钟,且不输出任何信息

30  2  *  *  *  /usr/sbin/ntpdate -u ntp1.aliyun.com &> /dev/null
5.4.6 定时任务权限(黑白名单)

禁止那些用户创建定时任务

/etc/cron.deny  # 黑名单,哪些用户不能使用定时任务
/etc/cron.allow #白名单,哪些用户可以使用定时任务

[!CAUTION]

白名单的优先级高于黑名单

案例245. 将系统中的普通用户(UID>1000)的加入黑名单,如果想要那个用户使用crontab则加入白名单

[root@kylin-ren-class /]# awk -F: '$3>1000 {print $1}' /etc/passwd > /etc/cron.deny

[root@kylin-ren-class ~]# su - pengyu

[pengyu@kylin-ren-class ~]$ crontab -e
You (pengyu) are not allowed to use this program (crontab)
See crontab(1) for more information

案例246. 将pengyu这个普通用户加入白名单

[root@kylin-ren-class /]# echo pengyu > /etc/cron.allow

[pengyu@kylin-ren-class ~]$ crontab -e #可编辑
5.4.7 crontab相关的目录
  1. 定时任务默认存放路径

    /var/spool/cron/
  2. 定时任务服务端的运行日志

    /var/log/cron
  3. 定时任务crontab会在系统中生成大量的邮件日志,会占用大量的磁盘,关闭的步骤

    # 查询服务是否存在
    find / -type f -name 'post*.service'
    查询服务是否存在
    systemctl list-units | grep post
    # 停止服务
    systemctl stop postfix
    # 查看服务运行状态
    systemctl status postfix
    # 禁止开机自启
    systemctl disable postfix

Linux基础知识之:crontab定时任务的更多相关文章

  1. Linux基础知识梳理

    Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...

  2. [转帖]linux基础知识大纲

    linux基础知识大纲 https://blog.csdn.net/CSDN___LYY/article/details/80810403 1.Linux操作系统概述Linux操作系统的发展过程.创始 ...

  3. Linux基础知识入门

    [Linux基础]Linux基础知识入门及常见命令.   前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1: ...

  4. 运维之linux基础知识(一)

    运维之linux基础知识(一) 1.GUI:Graphic User Interface 图形用户界面 2.CLI:Command line Interface 命令行界面 3 dll:Dynamic ...

  5. 运维之Linux基础知识(三)

    运维之Linux基础知识(三) 1. 查看文本 cat tac more less head tail 1.1 cat 连接并显示文件 cat -n:在显示的时候,将每一行编号 -E:显示结束符$ - ...

  6. Linux基础知识第九讲,linux中的解压缩,以及软件安装命令

    目录 Linux基础知识第九讲,linux中的解压缩,以及软件安装命令 一丶Linux Mac Windows下的压缩格式简介 2.压缩以及解压缩 3.linux中的软件安装以及卸载 1.apt进行安 ...

  7. Linux基础知识第八讲,系统相关操作命令

    目录 Linux基础知识第八讲,系统相关操作命令 一丶简介命令 2.磁盘信息查看. 3.系统进程 Linux基础知识第八讲,系统相关操作命令 一丶简介命令 时间和日期 date cal 磁盘和目录空间 ...

  8. Linux基础知识第七讲,用户权限以及用户操作命令

    目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod ...

  9. Linux基础知识第六讲,远程管理ssh操作

    目录 Linux基础知识第六讲,远程管理ssh操作 一丶什么是SSH 1.什么是SSH 2.了解域名跟端口 二丶SSH命令以及远程连接linux进行维护 1.ssh命令格式 2.scp远程终端拷贝文件 ...

  10. Linux基础知识第三讲,拷贝文件跟移动文件命令

    目录 Linux基础知识第三讲,拷贝文件跟移动文件命令 一丶常用命令 1.tree命令常用选项 2.cp复制文件命令 3.mv 命令的使用 Linux基础知识第三讲,拷贝文件跟移动文件命令 一丶常用命 ...

随机推荐

  1. [转]Ceres求解优化问题

    1. 简介Ceres Solver是专门用于求解非线性最小二乘问题的C++开源库,研究SLAM方向不过滤波和优化两个技术路线,因此常用Ceres库解决实际项目中的优化问题,当然还有g2o同样可用,但就 ...

  2. Ant入门简单实例

    一.构建ant环境 要使用ant首先要构建一个ant环境,步骤很简单: 1) 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH(这些应该是看这篇文章的人应该知道的) 2) 下载a ...

  3. 【狂神说Java】Java零基础学习笔记-Java入门

    [狂神说Java]Java零基础学习笔记-Java入门 Java入门01:Java帝国的诞生 C&C++ 1972年C诞生 贴近硬件,运行极快,效率极高. 操作系统,编译器,数据库,网络系统等 ...

  4. Python连接远程设备

    import paramiko def content_ssh(): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(parami ...

  5. CDS标准视图:维修工单实际成本数据 I_MaintOrderActualCostDataCube

    视图名称:维修工单实际成本数据 I_MaintOrderActualCostDataCube 视图类型:基础 视图代码: 点击查看代码 @VDM.viewType: #COMPOSITE @AbapC ...

  6. c# 反射私有类和私有方法

    namespace ClassLibrary1 { class InnerClass//私类 { public string Test(string s) { return "" ...

  7. SpringBoot(四) - 整合Mybatis,逆向工程,JPA,Mybatis-plus

    1.SpringBoot整合MyBatis 1.1 application.yml # 数据源配置 spring: datasource: driver-class-name: com.mysql.c ...

  8. runoob-PostgreSQL 教程

    https://www.runoob.com/postgresql/postgresql-tutorial.html

  9. 并发编程之 ConcurrentLinkedQueue 源码

    文章目录1 ConcurrentLinkedQueue的概述2 ConcurrentLinkedQueue的实现2.1 基本结构2.2 构造器2.2.1 ConcurrentLinkedQueue2. ...

  10. ConcurrentLinkedQueue深度源码剖析

    在Java的并发包中,存在着许多高效的并发工具类,它优于synchronized关键字,在JDK中提供了一个ConcurrentLinkedQueue工具类实现了高效的并发读写工具类,该工具类具有很高 ...