Linux 定时任务全解析

文章目录

    • 一、Cron 服务
      • 1.1安装
      • 1.2配置文件格式
      • 1.3使用方法
      • 1.4系统级与用户级 Cron 任务区别
    • 二、At 服务
      • 2.1安装
      • 2.2工作原理
      • 2.3使用方法


一、Cron 服务

1.1安装

在大多数 Linux 发行版中,Cron 服务通常已经默认安装。例如在 Ubuntu 系统中,可以通过以下命令检查是否安装:

dpkg -l | grep cron
  • 如果未安装,可以使用相应的包管理器进行安装。在 Ubuntu 或 Debian 系统中,使用sudo apt-get install cron;在 CentOS 或 RHEL 系统中,使用sudo yum install cronie。

1.2配置文件格式

Cron 任务通过crontab文件进行配置,其格式如下:

  • 一个crontab条目由 6 个字段组成,依次为分钟(0 - 59)、小时(0 - 23)、日(1 - 31)、月(1 - 12)、星期(0 - 6,0 代表星期日)和要执行的命令。
  • 例如,30 10 * * * /usr/bin/myscript.sh表示每天上午 10 点 30 分执行/usr/bin/myscript.sh脚本。

特殊字符含义:

  • :代表所有可能的值。如在分钟字段用表示每分钟。
  • ,:分隔多个值。如0,30 * * * *表示每小时的 0 分和 30 分执行任务。
  • -:表示时间范围。如0 10 - 12 * * *表示每天 10 点到 12 点执行任务。
  • /:表示时间间隔。如*/15 * * * *表示每 15 分钟执行一次任务。

1.3使用方法

  • 查看当前用户的 Cron 任务:

使用crontab -l命令。例如,如果当前用户设置了一些定时任务,执行该命令后会列出这些任务的详细信息,格式与crontab配置文件中的条目一致。

  • 编辑 Cron 任务:

使用crontab -e命令。这会根据系统默认的文本编辑器(如vi或nano)打开crontab文件进行编辑。例如,要添加一个每周日凌晨 2 点备份数据库的任务,在crontab文件中添加0 2 * * 0 /usr/bin/backup_database.sh。编辑完成后保存退出,Cron 服务会自动加载新的任务设置。

  • 删除 Cron 任务:

使用crontab -r命令可以删除当前用户的所有crontab任务。如果只想删除特定任务,先使用crontab -l查看任务列表,然后使用crontab -e进入编辑模式,删除对应的任务行。

1.4系统级与用户级 Cron 任务区别

  • 系统级 Cron 任务:

系统级cron任务的配置文件通常位于/etc/crontab。其格式与用户crontab文件不同,在命令前多了一个指定执行任务用户的字段。例如,0 0 * * * root /usr/bin/update_system表示每天午夜由root用户执行/usr/bin/update_system任务。

此外,在/etc目录下有cron.daily、cron.weekly、cron.monthly等子目录。这些目录中的可执行脚本会分别在每天、每周、每月自动执行一次。例如,/etc/cron.daily/logrotate脚本用于每天进行日志轮转操作,以避免日志文件过大占用过多磁盘空间。

  • 用户级 Cron 任务:

用户使用crontab -e设置自己的定时任务。每个用户的crontab文件存储在/var/spool/cron/crontabs目录下(不同发行版可能略有差异)。用户级任务主要用于个人需求,如个人数据备份、定时邮件提醒等。例如,普通用户可以设置一个每天晚上 9 点备份自己文档目录的任务,方便数据的定期保存。

二、At 服务

2.1安装

  • 同样,在多数 Linux 发行版中,At 服务也可能已默认安装。可以使用类似的命令检查,如在 Ubuntu 中dpkg -l | grep at。若未安装,在 Ubuntu 或 Debian 系统中使用sudo apt-get install at;在 CentOS 或 RHEL 系统中使用sudo yum install at。

2.2工作原理

  • At 命令用于在指定时间执行一次任务。当提交任务后,atd守护进程将任务存储在队列中,待指定时间到达时执行。

2.3使用方法

  • 例如,要在明天下午 3 点执行一个打印文件内容到特定文件的任务。首先输入at 3pm tomorrow,然后在出现的at>提示符下输入/bin/cat /home/user/sample.txt > /home/user/output.txt,最后按Ctrl+D结束输入。这样系统就会在指定时间执行该任务。
  • 查看已提交但未执行的at任务列表使用at -l命令,会列出任务编号和执行时间等信息。查看某个at任务的具体内容使用at -c命令,后面跟上任务编号(通过at -l获取)。要删除at任务,使用at -r命令并跟上任务编号。

无论是 Cron 还是 At 服务,在 Linux 系统管理和自动化任务处理方面都起着极为重要的作用。合理利用它们可以大大提高系统管理效率,减少人工干预,确保系统稳定运行和数据安全备份等任务按时执行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣 LeetCode 513. 找树左下角的值(Day8:二叉树)

解题思路: 方法一:递归法(方法二更好理解,个人更习惯方法二) 前中后序均可,实际上没有中的处理 中左右,左中右,左右中,实际上都是左在前,所以遇到的第一个…

Nuget For Unity插件介绍

NuGet for Unity:提升 Unity 开发效率的利器 NuGet 是 .NET 开发生态中不可或缺的包管理工具,你可以将其理解为Unity的Assets Store或者UPM,里面有很多库可以帮助我们提高开发效率。当你想使用一个库,恰好这个库没什么依赖(比如newtonjson),那么下载包并找到Dll直接…

“乐鑫组件注册表”简介

当启动一个新的开发项目时,开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间,还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念,旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

药房革新:Spring Boot中药实验管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

嵌入式 UI 开发的开源项目推荐

嵌入式开发 UI 难吗?你的痛点我懂!作为嵌入式开发者,你是否也有以下困扰?设备资源太少,功能和美观只能二选一?调试效率低,每次调整都要反复烧录和测试?开发周期太长,让你…

CTF--php伪协议结合Base64绕过

Base64绕过 在ctf中,base64是比较常见的编码方式,在做题的时候发现自己对于base64的编码和解码规则不是很了解,并且恰好碰到了类似的题目,在翻阅了大佬的文章后记录一下,对于base64编码的学习和一个工具 base64编码是…

基于Java Springboot电影播放平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

国标GB28181摄像机接入EasyGBS国标GB28181设备管理软件:GB28181-2022媒体传输协议解析

随着信息技术的飞速发展,视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。在这一转变过程中,国标GB28181设备管理软件EasyGBS成为了这场技术变革的重要一环。 GB28181-2022媒体传输协议 媒体传输命令包括实时视音频点播、历史视音频回放/…

Redis-monitor安装与配置

0、前言 压测环境因为隔离原因没法直接查看redis日志跟性能指数,只能通过监控工具查看,使用开源redis-montor监控查看 开源地址: GitCode - 全球开发者的开源社区,开源代码托管平台 1、python环境准备(python -v有的忽略&#xff…

windows basic语言学习笔记,批处理命令的简单使用

BAT学习笔记 前言 Windows 命令行中对参数的大小写不敏感,因此 /D 和 /d 的效果完全一致。 1. 代码1:创建目录并复制文件 源代码: echo off REM 创建目标目录,如果不存在 if not exist "C:\h2" (mkdir "C:\h2&q…

5-对象的访问权限

对象的访问权限知识点 对象的分类 在数据库中,数据库的表、索引、视图、缺省值、规则、触发器等等、都可以被称为数据库对象,其中对象主要分为两类 1、模式(schema)对象:模式对象可以理解为一个存储目录、包含视图、索引、数据类型、函数和…

Java Database Connectivity (JDBC + Servlet)

Java Database Connectivity (JDBC)是一个Java API,用于与数据库进行连接和操作。通过JDBC,Java程序可以与各种关系型数据库进行通信,执行SQL查询、更新数据等操作。 一、Java连接数据库两种方式 ​​​​​ ​​ 二、Java中…

[Realtek sdk-3.4.14b] RTL8197FH-VG新增jffs2分区操作说明

sdk说明 ** Gateway/AP firmware v3.4.14b – Aug 26, 2019**  Wireless LAN driver changes as:  Refine WiFi Stability and Performance  Add 8812F MU-MIMO  Add 97G/8812F multiple mac-clone  Add 97G 2T3R antenna diversity  Fix 97G/8812F/8814B MP issu…

鸿蒙多线程开发——线程间数据通信对象01

1、线程间通信 线程间通信指的是并发多线程间存在的数据交换行为。由于ArkTS语言兼容TS/JS,其运行时的实现与其它所有的JS引擎一样,都是基于Actor内存隔离的并发模型提供并发能力。 对于不同的数据对象,在ArkTS线程间通信的行为是有差异的&…

基于单片机的多功能跑步机控制系统

本设计基于单片机的一种多功能跑步机控制系统。该系统以STM32单片机为主控制器,由七个电路模块组成,分别是:单片机模块、电机控制模块、心率检测模块、音乐播放模块、液晶显示模块、语音控制模块、电源模块。其中,单片机模块是整个…

测试工程师如何在面试中脱颖而出

目录 1.平时工作中是怎么去测的? 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测? 4.你为什么能够做测试这一行?(根据个人情况分析理解) 5.你认为测试的目的是什么? 6.软件测试的流程&#xff…

PHM技术:基于支持向量机的智能故障诊断 | 行星齿轮箱智能故障诊断

目录 1.数据获取 2.特征提取与选择 3.健康状态识别 1.数据获取 用的行星齿轮箱数据采集自图1中的多级齿轮传动系统实验台中,在实验过程中,分别模拟了8种行星齿轮箱的健康状态,包括正常、第一级太阳轮点蚀、第一级太阳轮齿根裂纹、第一级…

【划分型 DP-约束划分个数】【hard】【阿里笔试】力扣1278. 分割回文串 III

给你一个由小写字母组成的字符串 s,和一个整数 k。 请你按下面的要求分割字符串: 首先,你可以将 s 中的部分字符修改为其他的小写英文字母。 接着,你需要把 s 分割成 k 个非空且不相交的子串,并且每个子串都是回文串…

国标GB28181视频平台EasyCVR视频融合平台H.265/H.264转码业务流程

在当今数字化、网络化的视频监控领域,大中型项目对于视频监控管理平台的需求日益增长,特别是在跨区域、多设备、高并发的复杂环境中。EasyCVR视频监控汇聚管理平台正是为了满足这些需求而设计的,它不仅提供了全面的管理功能,还支持…

相机触发模式

参考自:相机触发模式_硬触发和软触发的区别-CSDN博客 一、图像采集模式分类 相机的图像采集模式分为内触发模式与外触发模式。其中内触发模式包含连续采集、单帧采集两种形式;外触发模式包含软件外触发、硬件外触发。本文以海康相机的软件平台作介绍&a…