【Linux】crontab 定时任务

news2024/11/19 1:27:36

当你需要在Linux系统中定期执行某些任务时,crontab(cron table)是一个非常有用的工具。它允许你根据预定的时间表创建和管理定时任务。

  • 一、从守护进程到crond进程
    • 1.1 Linux 守护进程
    • 1.2 任务调度进程crond
  • 二、 crontab 详细介绍
    • 2.1 crontab 命令格式
    • 2.2 crontab文件的含义
    • 2.3 实操:编写crontab文件

一、从守护进程到crond进程

1.1 Linux 守护进程

按照进程的功能和运行的程序分类,进程可划分为两大类。

  • 系统进程:可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。
  • 用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。

针对用户进程,又可以分为交互进程、批处理进程和守护进程三类。

  • 交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。
  • 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。
  • 守护进程:守护进程是一直运行的一种进程,经常在Linux系统启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。例如,httpd进程一直处于运行状态,等待用户的访问。还有经常用的crond进程,这个进程类似于Windows地计划任务,可以周期性地执行用户设定的某些任务。

1.2 任务调度进程crond

crond 是 Linux 下用来周期性地执行某种任务或等待处理某些事件的一个守护进程,与Windows下的计划任务类似。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

(1)系统任务调度: 系统周期性要执行的工作,比如写缓存数据到硬盘、清理日志等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

打开该文件,可以看到这些内容:nvim /etc/crontab
在这里插入图片描述

上图中:

  1. 第七行:指定系统使用的shell程序;
  2. 第八行:命令的查找路径。(这前面2行就是设置环境变量)
  3. 18~21行:定时任务

(2)用户任务调度: 用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab 文件都保存在 /var/spool/cron目录中。其文件名与用户名一致。

二、 crontab 详细介绍

crontab文件:每个用户都有一个独立的crontab文件,用于存储他们的定时任务。这些文件通常位于/var/spool/cron/目录下,或者还有一级目录,以用户名命名。

2.1 crontab 命令格式

crontab常用的使用格式有如下两种。

crontab  [-u  user]  [file]         # 用于安装(载入)任务
crontab  [-u  user]  [-e|-l|-r |-i] # 用于编辑、查看、删除

选项含义如下:

  • -u user:用来设定某个用户的crontab服务。例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般由root用户来运行。
  • file:file是命令文件的名字,表示将file作为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
  • -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
  • -l:显示某个用户的 crontab 文件内容。如果不指定用户,则表示显示当前用户的crontab文件内容。
  • -r:从/var/spool/cron目录中删除某个用户的crontab文件。如果不指定用户,则默认删除当前用户的crontab文件。
  • -i:在删除用户的crontab文件时给出确认提示。

2.2 crontab文件的含义

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置

它的格式共分为7个字段,前5个字段是时间设定段,第6个字段是执行的用户,第7个字段是要执行的命令段,格式如下。

minute    hour    day    month    week   user  command

在这里插入图片描述

其中。

minute:表示分钟,可以是0~59的任何整数。
hour:表示小时,可以是0~23的任何整数。
day:表示日期,可以是1~31的任何整数。
month:表示月份,可以是1~12的任何整数。
week:表示星期几,可以是0~7的任何整数,这里的0或7代表星期日。
user:用户名,执行该任务的用户。也可以没有这个字段,文件中定义的任务将有文件的所有者执行。
command:表示要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符。

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

2.3 实操:编写crontab文件

我的系统里,crontab文件的位置是:/var/spool/cron/crontabs/root

打开,准备编写新任务是,发现:
在这里插入图片描述

提示不要直接编辑这个文件,而应该编辑另一个临时的文件。

编辑,肯定是能编辑的,我有权限就行。但是上面的方式可能更安全一点,防止错误,增加可维护性。那就按照推荐的来吧。

使用编辑命令:crontab -e,会先让你选择编辑器,我使用vim来编辑。

发现默认打开的是这个临时文件
在这里插入图片描述

那就来编辑一下:
在这里插入图片描述
编写了一个定时任务来进行测试,每隔一分钟,在/root/crontest.txt这个文件末尾追加一行,内容是系统的当前时间(这里用到了date命令和输出重定向)。

注意:这里我添加了前面2行,配置环境变量,是为了防止执行任务的时候找不到命令。

编辑完成后保存,退出nvim。然后再查看var目录下那个crontab文件,自动就更新了(那个临时的文件会自动删除)。
在这里插入图片描述

来看看定时任务的执行效果:
在这里插入图片描述
没问题。

crontab在Linux系统中有许多实际应用场景,以下是一些常见的例子:

  1. 定时备份:你可以使用crontab来定期执行备份脚本,以保护重要数据。例如,每天晚上执行一个备份脚本,将关键文件复制到另一个位置或远程服务器。

  2. 日志清理:系统日志和应用程序日志可能会占用大量磁盘空间。使用crontab可以定期清理过时的日志文件,以避免磁盘空间不足问题。

  3. 系统维护任务:crontab可以用于自动化各种系统维护任务,如更新软件包、执行磁盘碎片整理、优化数据库等。

  4. 数据同步:如果你有多个服务器需要进行数据同步,你可以使用crontab来定期运行数据同步脚本,以确保数据的一致性。

  5. 网站监控:你可以使用crontab来定期检查网站的可用性和响应时间,以及监测服务器的负载情况。这样可以及时发现并解决潜在的问题。

  6. 定时任务提醒:你可以使用crontab来创建提醒任务,例如每天早上发送一封电子邮件或弹出通知来提醒你重要的任务或事件。

这只是一小部分crontab的应用示例。实际上,你可以根据自己的需求和创意使用crontab来执行各种定时任务,提高工作效率和自动化操作。

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

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

相关文章

AI狂飙突进,存力需作先锋

5月30日,在2023中关村论坛成果发布会上,《北京市加快建设具有全球影响力的人工智能创新策源地实施方案(2023-2025年)》正式发布。《实施方案》要求,支持创新主体重点突破分布式高效深度学习框架、大模型新型基础架构等…

chatgpt赋能python:Python列表数据相加的完全指南

Python列表数据相加的完全指南 Python中的列表是一种非常方便的数据结构,它允许我们存储和处理一组数据。在这篇文章中,我们将介绍如何在Python中使用列表来进行数据相加的操作,并提供一些实用的技巧和建议。如果你正在寻找Python中关于列表…

linux安装docker并设置国内镜像仓库

前置条件 该方案为centos上安装docker,其他版本linux请参照官方文档:https://docs.docker.com/engine/install/centos/该linux系统没有安装过docker,或者已卸载docker #卸载docker yum remove docker \docker-client \docker-client-latest…

springboot整合kafka入门

kafka基本概念 producer: 生产者,负责发布消息到kafka cluster(kafka集群)中。生产者可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等。 consumer: 消费者,每个consumer属于一个特定的c…

Git提交代码报错 Push failed unable to access

目录 场景 环境: Git配置 场景 Push failed unable to access https://github.com/1790753131/remotRepository3.git/: Failed to connect to github.com port 443 after 21114 ms: Couldnt connect to server Push failed unable to ac…

A JavaScript error occurred in the main processUncaught Exception

A JavaScript error occurred in the main processUncaught Exception: Error: getaddrinfo ENOTFOUND rfw.jnsii.com at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) 💧 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一…

开放接口签名(Signature)实现

开放接口签名(Signature)实现方案 既然是对外开放,那么调用者一定没有我们系统的Token,就需要对调用者进行签名验证,签名验证采用主流的验证方式,采用Signature 的方式。 字段 类型 必传 说明 appid String 是 应用id tim…

windows server安全设置

Windows服务器安全策略设置 1. Windows服务器安全策略设置 操作系统关闭不必要的服务如smartd(一个守护进程(帮助程序)、Print Spoole(管理所有本地和网络打印队列及控制所有打印工作),操作系统关闭默认盘…

名著《MySQL必知必会》讲了个啥

文章目录 第一章 了解SQL第二章 检索数据第三章 排序第四章 过滤数据第五章 高级数据过滤第六章 多表查询内连接(交集)外连接多表连接UNIONUNION ALL 第七章 单行函数日期和时间函数获取日期、时间日期与时间戳的转换获取月份、星期、星期数、天数等函数…

chatgpt赋能python:Python中创建空列表的两种方法

Python中创建空列表的两种方法 在Python编程中,创建空列表是一项非常常见的任务。Python提供了两种主要的方法来创建一个空列表,分别是“中括号法”和“list()函数法”。本文将介绍这两种方法,它们的优缺点以及如何在你的代码中使用它们。 …

2023年5月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

5月,市场大部熊市与局部牛市并存,一方面,BRC-20与Meme币引领热点涨势,代表项目Ordinals与Pepe涨幅上千倍,相继引发比特币与以太坊拥堵,市场情绪高涨;另一方面,主流币种持续震荡&…

【终结】Plsql 监听失败+链接Oracle ORA-12545:因目标主机不存在

折腾我好久!翻阅千山万水也没有命中问题!今天我要公布于世!如何解决! 起因:服务器那边重启了我运行良好的主机导致上述问题! 感谢各位CSDN默默贡献的大神,是你们促进互联网的发展!…

无需魔法、无需账户!可免费直接使用微软新必应

大家好,我是校长。 如果你不会魔法上网,如果你没有 ChatGPT 账号,无法体验大语言模型生成式 AI ,别怕,我给大家推荐一个好的开源的应用站点,它可以让你体验一番。 前几天,我刷 GitHub 的时候&am…

Transformer工业部署落地!超越ResNet、CSWin(附源码)

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2207.05501.pdf 计算机视觉研究院专栏 作者:Edison_G 一种用于在现实工业场景中高效部署的下…

读改变未来的九大算法笔记02_数据库

1. 基础思想 1.1. 预写日志记录 1.2. 两阶段提交 1.3. 关系数据库 2. 两个事实 2.1. 计算机程序会崩溃 2.1.1. 当一个程序崩溃时,它会丢掉所有正在处理的东西 2.1.2. 只有安放在计算机文件系统中的信息会得到保存 2.1.3. 崩溃相当宽泛:包括任何可…

助力智能制造数字化转型 | 5.31 IoTDB 中航机载制造行业客户分享会回顾

5 月 31 日,IoTDB & 中航机载智能制造实践分享会在线上举办。IoTDB 与中航机载的两位产品、技术专家,结合 EMQ 与深南电路的两位技术大拿,针对制造行业智能化痛点带来了一场方案实践分享,与线上直播中上千人次的智能制造关注者…

专访瑞声科技应用软件开发总监陆其明:当一名老兵决定重新上路

编者按:从互联网公司到智能终端解决方案公司,陆其明的这次转变可能难以被人理解。但经济大环境的影响和个人的技术困境还是让他义无反顾地走向一个未知的世界。正如黄仁勋日前所言,“撤退”对聪明人来说并不容易。然而,战略性的撤…

刷题记录:一维前缀和 | leetcode-2559. 统计范围内的元音字符串数 2023/6/2

leetcode-2559. 统计范围内的元音字符串数 这道题的思路并不难找,一开始我有点看出是一维前缀和问题,但没有很确定,因此也就没有直接从这个思路走下去。还是想着先做暴力版本的吧! 这是暴力版本的代码: class Solut…

零基础搭建私有云盘并内网穿透远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章:使用Nextcl…

小白入门C#初探Web简易页面显示信息小案例

1、创建新项目 选择ASP.NET Core Web应用(模型-视图-控制器),然后点击下一步。 然后在项目名称里面填写CSharpDemo,点击下一步,直至创建即可。 目录结构: Connected Services:是Visual S…