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. Qt编写地图综合应用23-标注点交互

    一.前言 地图项目应用中,标注点的交互使用频率非常高,这应该是最常用的场景,比如从数据库中读取出来设备的信息包括经纬度坐标,然后需要在地图上显示对应的设备,这就需要用addMarker函数来动态添加标 ...

  2. Qt音视频开发9-ffmpeg录像存储

    一.前言 上一篇文章写道直接将视频流保存裸流到文件,尽管裸流文件有一定的好处,但是 毕竟大部分用户需要的不是裸流而是MP4视频文件,所以需要将视频流保存成MP4文件,毕竟电脑上的播放器包括默认的播放器 ...

  3. Qt音视频开发8-ffmpeg保存裸流

    一.前言 最开始做的ffmpeg保存视频文件,就是直接保存的裸流数据,裸流数据一般是H264格式的数据,这种数据文件可以用部分播放器播放,由于不是标准的格式,很多播放器其实不支持的,需要安装对应的解码 ...

  4. UML之集合类型

    无论何时当我们要使用一个多值对象时,我们必须要清楚两个问题,一是这些值的顺序重要吗?二是允许重复值的存在吗?在编程语言中还会有其他的明确的信息,在UML中,只需明确这两个问题的答案即可确定对应的集合类 ...

  5. [转]Visual Studio调试模式下添加命令行参数的方法

    在VS中向命令行添加参数,即向main()函数传递参数的方法: 右键单击:添加参数的工程-->属性-->配置属性-->调试,在右侧"命令参数"栏输入要添加的参数, ...

  6. BotSharp:又一个.Net重磅AI开源项目,.Net在AI领域开始崛起!

    大家好,我是编程乐趣. 自从大模型爆火以来,.Net不管是官方.还是社区开源项目,都陆续推出很多重磅的项目. 在AI领域,对话即平台(CaaP)是未来的发展方向. 下面介绍一个开源项目,面向AI Bo ...

  7. C51--05---LCD1602调试工具

    一.LCD1602调试工具 单片机调试工具: 数码管 液晶屏 串口 数码管需要不断进行扫描,一旦扫描不及时就会不断闪烁,并且可显示的数据太过局限: 串口需要使用电脑进行发送指令,不易操作与携带: 所以 ...

  8. C#中如何使用异步编程

    在 C# 中,异步编程主要通过 async 和 await 关键字来实现.异步编程的目的是让程序在执行耗时操作(如 I/O 操作.网络请求等)时不会阻塞主线程,从而提高程序的性能. 1. 异步编程的核 ...

  9. CDS标准视图:功能位置 I_FunctionalLocation

    视图名称:I_FunctionalLocation 视图类型:基础 视图代码: 点击查看代码 @EndUserText.label: 'Functional Location' @Analytics: ...

  10. Popup弹出层滚动不流畅

    使用 Vant 框架中的 van-popup 组件(弹框组件);导致列表上下滑动不流畅 Popup 弹出层 滚动不流畅 <van-popup v-model="conFlag" ...