【Linux杂篇】Cron是什么?利用Cron Job自动执行定时任务

news2024/11/19 4:28:05

Cron

Cron是一个实用程序,用于在特定的时间自动执行重复任务。在Linux中,常用 cron 服务器来完成这项工作,以下是Cron的工作原理:

如果想稍后执行特定任务一次,可以使用其他命令。但是,对于重复性任务,cron是完美的解决方案。Cron是一个守护进程,这意味着它在后台运行以执行非交互式任务。类似Windows后台进程中的服务。

守护程序始终处于空闲状态,并等待命令请求执行某项任务 – 在计算机内或从网络上的任何其他计算机执行。cron文件是一个简单的文本文件,包含在特定时间运行的命令。

默认crontab文件是/ etc / crontab,位于crontab目录/etc/cron.*/.,只有系统管理员才能编辑系统crontab文件。但是,由于类Unix操作系统支持多个用户,每个用户还可以创建自己的crontab文件并启动命令以随时执行任务,cron守护程序将检查文件并在系统后台运行该命令。

使用cron作业,可以自动执行系统维护,磁盘空间监视和备份计划。由于其性质,cron作业非常适合全天候工作的计算机 – 服务器。

请注意,虽然cron作业主要由系统管理员使用,但它对Web开发人员也非常有用。例如,要停用已过期的帐户,检查损坏的链接,甚至为目标用户发送简报都可以使用cron作业。

Cron工作的基础知识

基本上,可以使用几种不同的方法创建和编辑cron作业。在本教程中,我们想向您展示如何使用Linux Shell Prompt(终端)来完成它。

以下是cron作业可以执行的一些基本操作:

如果要编辑当前用户的crontab文件,请在终端中键入crontab -e:

它会为您提供这样的结果

在使用vi编辑器时,可以学习基本的vi命令,以确保采取正确的操作。

如果要编辑其他用户的crontab,可以键入crontab -u username -e。请记住,您只能以超级用户身份执行此操作,这意味着需要在命令之前键入:sudo su。

另一个操作允许您查看是否创建了任何crontab文件,只需键入crontab -l即可。如果没有,您将看到此结果。

此外,如果要查看其他用户的crontab文件列表,可以键入crontab -u username –l

除了解基本操作外,学习基本语法也很重要。

基本上,crontab文件由两部分组成:调度计时器和命令,这是命令的编写方式:

* * * * * / bin / sh backup.sh

***** / bin / sh backup.sh cronjob意味着它将每分钟运行一次备份。

30 18 * * * rm / home / sydtesting / tmp / *表示它每天下午6:30 从/ home / sydtesting / tmp中删除tmp文件。

如何正确编写Cron语法?

如前所述,crontab文件有五个字段 – 每个字段用星号表示 – 以确定某个任务集重复执行的日期和时间。

Minute – 运行命令的分钟,范围从0到59

Hour  – 命令将在什么时间运行,范围从0到23

Day of the month – 命令运行的月份的某一天,范围从1到31

Month – 指定命令运行的月份,范围从1到12

Day of the week – 希望命令运行的星期几,范围从0到7

除此之外,您还需要在每个crontab文件中使用正确的字符。

Asterisk (*)  – 定义所有调度参数。

Comma (,) – 保持单个命令的两个或更多执行时间。

Hyphen (-) – 确定设置单个命令的多个执行时间的时间范围。

Slash (/) – 用于在特定范围内创建预定的时间间隔。

Last (L)  – 用于确定给定月份中一周的最后一天的特定目的,例如,3L表示最后一个星期三。

Weekday (W) – 确定给定时间的最近工作日,例如,1W表示如果第1个是星期六,则命令将在星期一(第3个)运行。

Hash (#) – 用于确定星期几,后跟1到5之间的数字。例如,1#2表示第二个星期一

Question mark (?) – 留空。

11 Cron语法示例

在继续之前,请记住该命令的输出将自动发送到本地电子邮件帐户。因此,如果要停止接收这些电子邮件,可以将> / dev / null 2>&1添加到语法中,如以下示例所示:

0 5 * * * /root/backup.sh> / dev / null 2>&1
 

此外,如果要将电子邮件输出发送到特定帐户,则可以添加MAILTO,然后添加电子邮件地址,如下:

MAILTO = “myname@hostinger.com”

0 3 * * * /root/backup.sh> / dev / null 2>&1
 

更多语法示例:

0 0 * * * / bin / sh backup.s——在每天午夜执行数据库备份。

0 6,18 * * * / bin / sh backup.sh   ——在上午6点和下午6点每天执行两次数据库备份

0 * / 6 * * * /scripts/monitor.sh——每六个小时进行一次监控

* / 10 * * * * /home/user/script.sh——每10分钟为主目录中的脚本文件执行一次cron作业

0 * 20 7 * / bin / sh backup.sh——在7月20日每小时运行一次数据库备份。

0 0 * * 2 * / bin / sh——在每个星期二的零点运行数据库备份

* * * 1,2,5 * /script/script.sh——在1月,2月和5月运行命令

10-59 / 5 5 * * * /home/user/script.sh     ——在凌晨5点开始每隔5分钟运行一次命令,从早上5:10开始

0 8 1 * / 3 * /home/user/script.sh——每季度在第一天早上8点运行一个命令

* * * * * /scripts/script.sh; /scripts/scrit2.sh——在单个cron作业上设置多个任务的计划

@reboot /scripts/script.sh——每次启动系统时执行某项任务

结论

设置自动计划的任务不仅实用,而且还可以防止错过按时采取的假设行动。Cron Job是一种管理此类任务的好方法,无论是作为系统管理员还是像Web开发人员这样的职业,您需要做的就是使用正确的命令并选择正确的时间。

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

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

相关文章

模电视频笔记:详解直接耦合放大电路p146,3.1.1

一个图一个图的分析下来: 初始的电路原型 ,这是把两个基本的共射放大电路组合了起来。 补充几个很重要的知识点,否则字都认识,但是完全看不懂在说什么: a、图中的晶体管是npn型晶体管。 b、这个电路是共射放大电路 c、…

产品经理如何更好的适应工作呢?

先来了解一下和产品经理相关的数据 大厂职能需求占比变化 岗位薪酬水平&岗位要求 产品经理市场需求现状 大厂喜欢招聘什么样的人? 无论是通过什么途径成为了一名产品经理,对于该岗位所需要的技能其实都是类似的,把产品经理需要具备的能力…

236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 难度中等 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大…

【算法数据结构初阶篇】:随机函数

随即函数的用处非常大,比如可能用来用做对数器,生成大量随机的测试数据,用来验证我们写的程序是否有误,可以帮助我们快速定位存在错误的测试用例,进行debug。这里注意Java中的随机函数Math.random()是等概率的返回[0,1…

TCP/IP网络编程(4)——基于 TCP 的服务端/客户端(1)

文章目录第 4 章 基于 TCP 的服务端/客户端(1)4.1 理解 TCP 和 UDP4.1.1 TCP/IP 协议栈4.1.2 链路层4.1.3 IP 层4.1.4 TCP/UDP 层4.1.5 应用层4.1.6 生活小例子4.2 实现基于 TCP 的服务器/客户端4.2.1 TCP 服务端的默认函数的调用程序4.2.2 进入等待连接…

微信小程序原生开发功能合集一:微信小程序开发介绍

一、专栏介绍 本专栏主要内容为微信小程序常用功能开发过程的介绍说明,包括开发微信小程序常用组件的封装、常用功能的开发等,提供源代码、开发过程讲解视频、完整的课程等。 组件封装: 下拉选择组件、图片上传组件、视频上传组件、富文本组件…

C# Dictionary(字典)各种属性的用法

C# Dictionary(字典)各种属性的用法 要使用Dictionary集合,需要导入C#泛型命名空间! ​System.Collections.Generic​(程序集:mscorlib) Dictionary的描述 1、从一组键(Key)到一组值…

seo关键词排名下降怎么办(SEO网站关键词排名不稳定)

关键词优化网站排名突然下降是什么原因 一般来讲,网站的排名不会大幅度的下降,除非搜索引擎的流量特别小,而这也不是偶然发生的。网站一旦获得对应的权重或者排名,就不要轻易的更改板块和文章,甚至是文章标题之类的&a…

Allegro如何导出和导入层叠操作指导

Allegro如何导出和导入层叠操作指导 在做PCB设计的时候,需要导出或者导入层叠,Allegro升级到了172以后,支持单独导出和导入层叠,如下图 具体操作如下 导出层叠,选择setup选择Cross-section

《图机器学习》-Message Passing and Node Classification

Message Passing and Node Classification一、前言二、How do we leverage node correlation in network?三、Relational Classification四、Iterative classification五、Loopy Belief Propagation一、前言 现在的主要问题是: 给定一个网络&#xff0c…

利用idea把项目上传到不同的仓库

前言 以项目已经创建好,并已经和一个远程仓库地址联通的情况下。 由于GitHub经常会出现问题,毕竟国外的东西,时常会不稳定,所以我们有时候也会使用国产Git代码管理工具——码云。 说真的,码云可真的是一个好东西。要…

SpringBoot原理-自动配置-Condition

目录 分析 通过获取 run() 的返回值再获取容器中的bean Conditional() 注解 解说案例 1.导入Jedis坐标后,加载该Bean,没导入,则不加载 思考 spring-boot-autoconfigure condition包 ConditionalOnClass ConditionalOnBean Conditi…

Python【bs4模块】讲解

导入:from bs4 import BeautifulSoup#爬取某豆的电影榜单 import pprint import requests from bs4 import BeautifulSoup class pachong:#pass #这段代码的意思如果暂时没有想好在类中定义任何属性和方法,你可以先写pass Python就会认为这段不会运行直接…

基于GeoDa软件的省级人口经济空间分析

前言本为从地统计学角度,借助空间自相关的方法,从县域尺度,研究江西省各县经济发展水平之间的相关关系,及经济发展与人口之间的相关关系,直观的说明江西省2000年的经济发展状况。通过对各市第一、第二、第三产业的GDP等…

Servlet总结(未完待续)

Servlet总结一. 简介二. Servlet执行流程三. 生命周期四. 体系结构五. urlPattern配置匹配规则六. Request和Response1. Request1.1 Request继承体系1.2 Request获取请求数据API1.3 通用方式获取请求参数1.4 通用方式中文乱码解决1.5 Request请求转发2.1 Response一. 简介 Ser…

轻量级 Java 权限认证框架——Sa-Token

Sa-Token 介绍 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 Sa-Token最新开发文档地址:https://sa-token.cc Sa-Token功能结构图…

MySQL最左匹配原则

说到最左匹配原则,我们还得先从组合索引说起。 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS user; CREATE TABLE user (id int(5) NOT NU…

【Java AWT 图形界面编程】LayoutManager 布局管理器 ⑥ ( BoxLayout 布局 )

文章目录一、BoxLayout 布局二、BoxLayout 布局 API三、BoxLayout 布局代码示例1、BoxLayout 布局垂直排列代码示例2、BoxLayout 布局水平排列代码示例一、BoxLayout 布局 BoxLayout 布局 不是 AWT 中的布局 , 而是 Swing 中引入的 ; 在 BoxLayout 布局 中 , 可以 在 垂直 和 …

[Effective Objective] 对象、消息、运行期

对象:“对象”(object)就是“基本构造单元”(building block),开发者可以通过对象来储存并传递数据。 消息:在对象之间传递数据并执行任务的过程就叫做“消息传递”(Messaging)。 运行期&…

最粗暴的方法实现一个栈

对于栈和队列是一个很简单的知识,用的感觉也不是很多,但是,我们仍然的学习!!加油!!在实现最简单的栈之前,我们需要简单了解一下栈是什么??栈(stac…