Linux Crontab 任务管理工具命令以及示例

Crontab 是 Linux 平台下的一款用于循环执行例行任务的工具,Linux 系统由 cron (crond) 这个系统服务来控制任务 , Linux系统本来就有很多的计划任务需要启动 , 所以这个系统服务是默认开机启动的 。 Linux 为使用者提供的计划任务的命令就是 Crontab

Crontab 是 Linux 下用来周期性执行任务或者等待处理某些事情的时候

Crontab 配置文件

Crontab 的周期性任务主要分为两种:系统任务 / 用户任务

  • 系统任务就是系统周期性需要执行的任务,比如说定时执行缓存清理任务,记录日志等等。系统任务的配置文件在 /etc/crontab

这里是 crontab 的配置文件中的内容

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
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

前面 4 行用于配置 cron 的环境变量,环境变量的配置不在这里讨论了,之后的内容是 crontab 的用法的一些简单的解释

  • 用户的周期性任务就可以使用 crontab 工具,所有用户制定的 crontab 计划任务都被保存在 /var/spool/cron 中,文件名即用户名

Crontab 文件的含义

在上面的crontab文件中已经包含了一部分的解释,这里我将其翻译为中文

SHELL=/bin/sh        
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# 详细的解释可以查看 man 手册# 举例:
# .---------------- 分 (0 - 59)        
# |  .------------- 时 (0 - 23)
# |  |  .---------- 日期(每月) (1 - 31)
# |  |  |  .------- 月 (1 - 12) 也可以使用月的英文,例如 jan,feb,mar,apr ...
# |  |  |  |  .---- 日期(每周) (0 - 6) (周日即是 0 也是 7 )也可以使用sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * 想要执行命令的用户(这个参数可以为空)   你想要执行的命令

Crontab 一共包含包括 7 个字段,前五个字段是关于设置执行周期的,第六个字段用于指定你想要执行的命令的用户,第七个字段是要执行的命令

在前5个字段中,还可以使用以下的特殊字符

星号 (*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号 (,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠 (-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

相关的权限文件

  • /etc/cron.deny 该文件中所列的用户不允许使用 crontab 命令
  • /etc/cron.allow 该文件中所列的用户允许使用 crontab 命令
  • /var/spool/cron/ 所有用户 crontab 文件存放的目录,文件名即用户名

Crontab 服务

  • 安装 Crontab 服务

CentOS 7.x

yum install crontabs

Fedora 23+

dnf install crontabs 

在大多数 Linux 发行版中已经自带的 Crontab ,依旧写一下安装方法

  • 启用服务
systemctl start crond
  • 停止服务
systemctl stop crond
  • 查看服务状态
systemctl status crond 
  • 加入开机启动
systemctl enable crond 
  • 取消开机启动
systemctl disable crond 

命令格式详解

Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]Options:-u <user>  define user //设定某个用户的crontab服务,例如,“-u user1”表示设定 user1 用户的 crontab 服务,此参数一般由root用户来运行-e         edit user's crontab //编辑 crontab 文件内容。如果不指定用户,则表示编辑当前用户的crontab文件-l         list user's crontab //显示 crontab 文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容-r         delete user's crontab //删除某个用户的 crontab 文件,如果不指定用户,则默认删除当前用户的crontab文件,此动作一般由 root 来执行-i         prompt before deleting //在删除用户的crontab文件时给确认提示-n <host>  set host in cluster to run users' crontabs //这个选项只有才 cron(8) 才启用,可以根据已经创建好了的配置文件来指定得对于一个集群来执行任务-c         get host in cluster to run users' crontabs //这个选项只有才 cron(8) 才启用,可以查看集群目前的状态,需要和 -n 协同使用-s         selinux context  //selinux 相关选项-x <mask>  enable debugging //开启调试

使用方法

  • 输入 crontab -e 并回车即可开始编辑当前用户的 crontab 文件,编辑完成保存之后文件立即生效

默认使用 vi 编辑器,如果想要使用 vim 编辑器或者其他编辑器,可以新建环境变量 EDITOR,变量值为你想要使用的编辑器的指令,例如我想要使用 nano 作为编辑器,就可以执行命令 “export EDITOR=nano” 来添加一个环境变量。
如果想要让环境变量永久生效,可以将要执行的命令写入到 “~/.bashrc”中,这样下次启动的时候就会自动配置。

  • 如果想要删除 crontab 文件可以使用 crontab -r 来删除当前用户的 crontab 文件
  • 想要快速查看 crontab 文件可以使用命令 crontab -l

备份 crontab 文件

为了防止文件被意外删除 , 我们可以在建立好了 crontab 任务之后备份一下相关的配置文件,笔者的思路是在复制一次当期的文档并在后面加上 “.backup” 来示意是备份文件,通常只需要执行以下命令(以 root 用户为例)

cp /var/spool/cron/root /var/spool/cron/root.bachup

如果当前用户没有权限的话,可以先将自己的配置文件复制到自己的 HOME 目录下也是可以的

一些简单的示例

每个月的 1 号的 2:30 分重启 Apache 服务

30 2 1 * *  systemctl restart httpd  

每个星期的星期一的早上1点重启 mariadb

0 1 * * 1 systemctl restart mariadb

更多的示例可以通过搜索轻松得找到,这里就不多说了

注意事项

通常来说,我们建立的 crontab 任务都是保存了之后立即执行的,但是有的时候却无法执行,将命令单独拿出来却可以使用,这个时候就需要检查一下 crontab 文件的环境变量是否正常。cron 不是 shell,在执行的时候是不知道环境变量的,所以在脚本或者说是配置文件中提供必要的环境变量文件以及路径,主要注意以下几点

  1. 配置文件中一点涉及路径时,使用绝对路径
  2. 任务执行需要用到 python 或者 java 又或者其他环境变量的时候,需要通过 source 命令引入环境变量
  3. 在某些情况下,手动执行脚本可以使用,但是放在 Crontab 中就无法执行,就很有可能是由于环境变量引起的故障,可以通过在 crontab 中直接引入环境变量。

其他事项

  • 很奇怪的是在我查阅了很多的资料,发现都说在 crontab 的任务执行完毕之后会向当前系统用户发送一封邮件,但是我的 crontab 在进行了2天的任务都没有接收到任何邮件
  • crontab 的文件刚刚写入不一定会立即执行,执行的延迟大概在2分钟左右,如果重启 crond 服务则立即执行
  • 据说在 crontab 中 % 是有特殊含义的,表示换行的意思。但是在笔者的验证中没有发现这一现象
  • 如果只运行 crontab -r 有可能删除 crontab 目录下的所有用户的 crontab

转载于:https://www.cnblogs.com/divent/p/5743008.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)

IPv4套接字地址结构 struct sockaddr_in {uint8_t sinlen;&#xff08;4个字节&#xff09;sa_family_t sin_family;&#xff08;4个字节&#xff09;in_port_t sin_port;&#xff08;2个字节&#xff09;struct in_addr sin_addr;&#xff08;4个字节&#xff09;char sin_zer…

地籍cad的lisp程序大集合_AutoCAD-LISP程序100例

{:soso_e179:}AutoCAD-LISP程序100例.JPG (143.82 KB, 下载次数: 28)2011-10-18 14:42 上传有说明很好&#xff01;顶如果您使用 AutoCAD,下面的内容对您一定有帮助。在某些方面能大大提高您的工作效率。下面的程序均以源程序方式给出&#xff0c;您可以使用、参考、修改它。bg…

javascript中数组的22种方法

前面的话数组总共有22种方法&#xff0c;本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组方法、数组删改方法、数组位置方法、数组归并方法和数组迭代方法共10类来进行详细介绍对象继承方法数组是一种特殊的对象&#xff0c;继…

javascript/jquery高度宽度详情解说分析

为什么80%的码农都做不了架构师&#xff1f;>>> 一、window对象表示浏览器中打开的窗口 二、window对象可以省略 一、document对象是window对象的一部分 二、浏览器的HTML文档成为Document对象 window.location和document.location window对象的location属性引用的…

农用地包括哪些地类_土地地类一览表

一级类二级类三级类含义编号三大类名称编号名称编号名称1农用地指直接用于农业生产的土地&#xff0c;包括耕地&#xff0c;园地&#xff0c;林地&#xff0c;牧草地及其他的农业用地11耕地指种植农作物、土地&#xff0c;包括熟地、新开发复垦整理地&#xff0c;休闲地、轮歇地…

红黑树插入时的自平衡

红黑树插入时的自平衡 红黑树实质上是一棵自平衡的二叉查找树&#xff0c;引入带颜色的节点也是为了方便在进行插入或删除操作时&#xff0c;如果破坏了二叉查找树的平衡性能通过一系列变换保持平衡。 红黑树的性质 每个节点要么是红色&#xff0c;要么是黑色根节点必须是黑…

说一下自己对于 Linux 哲学的理解

查阅了一些资料&#xff0c;官方的哲学思想貌似是&#xff1a; 一切皆文件由众多单一目的的小程序&#xff0c;一个程序只实现一个功能&#xff0c;多个程序组合完成复杂任务文本文件保存配置信息尽量避免与用户交互什么&#xff0c;你问我的理解&#xff1f;哲学思想&#xff…

UWP学习记录

微软{X:Bind}、{Binding}资料网站 &#xff1a; https://msdn.microsoft.com/windows/uwp/xaml-platform/x-bind-markup-extension在View的ItemTemplate中绑定ViewModel的方法&#xff1a;1 <ItemsControl Name"XX" ItemsSource"{x:Bind VM.XXModels,ModeOne…

dw1000信标码_DW1000方案工牌型UWB标签,助力10厘米高精度室内定位!

DW1000方案工牌型UWB标签&#xff0c;助力10厘米高精度室内定位&#xff01;发布日期&#xff1a;2019-04-01 浏览次数&#xff1a;244次微能信息(95power)推出一款工牌型UWB标签VDU1510 &#xff0c;广泛应用于超宽带UWB定位系统&#xff0c;最高可实现10cm高精度人员定位。工…

【Java】HashMap源码(1.7)

Life is not a ridiculous number of life, the meaning of life lies in life itself HashMap源码 散列集 数组和链表可以保持元素插入的顺序&#xff0c;对数组来说&#xff0c;他的优点是拥有连续的存储空间&#xff0c;因此可以使用元素下标快速访问&#xff0c;但缺点在…

Docker 基本用法

1.安装&#xff1a; wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm yum install docker-io -y2.获取镜像 pull docker pull ubuntu docker pull ubuntu:14.043.运行这个镜像&#xff0c;在其中运行bash应用…

画刷的使用

1.画刷的定义&#xff1a; HBRUSH hBrush; windows 自定义的画刷&#xff1a; WHITE_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH、BLACK_BRUSH和NULL_BRUSH &#xff08;也叫HOLLOW_BRUSH&#xff09; 获取方法如下&#xff1a; hBrush (HBRUSH) GetStockObject (GRAY_BR…

dataframe 控对象_iOS知识 - 常用小技巧大杂烩

1&#xff0c;打印View所有子视图po [[self view]recursiveDescription]2&#xff0c;layoutSubviews调用的调用时机* 当视图第一次显示的时候会被调用。* 添加子视图也会调用这个方法。* 当本视图的大小发生改变的时候是会调用的。* 当子视图的frame发生改变的时候是会调用的。…

【Java】jdk 1.8 新特性——Lambda表达式

Lambda表达式 jdk 1.8 新加入的特性&#xff0c;简化了简单接口的实现 函数式接口 函数式中只有一个待实现的方法&#xff0c;可以使用FunctionalInterface注解标注函数式接口.这个接口中只能有一个待实现的方法&#xff0c;但可以包含默认方法&#xff0c;静态方法以及Obje…

【Todo】Java8新特性学习

参考这篇文章吧&#xff1a; http://blog.csdn.net/vchen_hao/article/details/53301073 还有一个系列转载于:https://www.cnblogs.com/charlesblc/p/6123380.html

jsp调整字体大小font_html font标签如何设置字体大小?

首先我们先来看看htmlfont标签是如何来设置字体大小的&#xff1a;都只到htmlfont标签是个专门用来设置字体的标签&#xff0c;虽然在html5中用的会很少(因为都用css样式来设置font标签里面的属性)&#xff0c;但是个人觉得font标签还是相当强大的标签的&#xff0c;为什么这么…

runtime官方文档

OC是一种面向对象的动态语言&#xff0c;作为初学者可能大多数人对面向对象这个概念理解的比较深&#xff0c;而对OC是动态语言这一特性了解的比较少。那么什么是动态语言&#xff1f;动态语言就是在运行时来执行静态语言的编译链接的工作。这就要求除了编译器之外还要有一种运…

【Java】synchronized关键字笔记

Java Synchronized 关键字 壹. Java并发编程存在的问题 1. 可见性问题 可见性问题是指一个线程不能立刻拿到另外一个线程对共享变量的修改的结果。 如&#xff1a; package Note.concurrency;public class Demo07 {private static boolean s true;public static void mai…

sql语句分析是否走索引_MySql 的SQL执行计划查看,判断是否走索引

在select窗口中&#xff0c;执行以下语句&#xff1a;set profiling 1; -- 打开profile分析工具show variables like %profil%; -- 查看是否生效show processlist; -- 查看进程use cmc; -- 选择数据库show PROFILE all; -- 全部分析的类型show index from t_log_account; ##查看…

SQL Server-数据类型(七)

前言 前面几篇文章我们讲解了索引有关知识&#xff0c;这一节我们再继续我们下面内容讲解&#xff0c;简短的内容&#xff0c;深入的理解&#xff0c;Always to review the basics。 数据类型 SQL Server支持两种字符数据类型&#xff0c;一种是常规&#xff0c;另外一种则是Un…