Linux 定时任务全解析

embedded/2024/11/22 20:30:00/

文章目录

    • 一、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 系统管理和自动化任务处理方面都起着极为重要的作用。合理利用它们可以大大提高系统管理效率,减少人工干预,确保系统稳定运行和数据安全备份等任务按时执行。


http://www.ppmy.cn/embedded/139700.html

相关文章

.NET 简介

文章目录 一、组件二、免费且开源三、支持四、.NET 生态系统 .NET 是一个免费的跨平台开放源代码开发人员平台,用于生成多种类型的应用程序。 .NET 可以运行使用多种语言编写的程序,其中 C# 是最常用的语言。 .NET 依赖于许多大规模应用在生产中使用的高…

【网络安全 | 漏洞挖掘】邮件HTML注入

文章目录 Email 中的 HTML 注入漏洞漏洞挖掘过程1. 初步信息收集2. 发现私信功能3. 功能测试与 HTML 注入测试测试步骤请求拦截与分析4. 绕过防护机制绕过方法附加威胁漏洞影响漏洞报告与奖励Email 中的 HTML 注入漏洞 HTML 注入是一种安全漏洞,攻击者通过将任意 HTML 标签注…

vue中路由缓存

vue中路由缓存 问题描述及截图解决思路关键代码及打印信息截图 问题描述及截图 在使用某一平台时发现当列表页码切换后点击某一卡片进入详情页后,再返回列表页时页面刷新了。这样用户每次看完详情回到列表页都得再重新输入自己的查询条件,或者切换分页到…

【linux】插入新硬盘如何配置:格式化、分区、自动挂载(Ubuntu)

文章目录 具体方法GPT分区表(GUID Partition Table)(建议都用这种分区方法)MBR分区表方法(最大支持2TB分区)(Master Boot Record) 附加:如何查看硬盘的型号另外&#xff…

刘艳兵-DBA042-下述哪些文件是在CREATE DATABASE命令中创建的?

下述哪些文件是在CREATE DATABASE命令中创建的? A 口令文件 B 静态参数文件 C SYSAUX表空间数据文件 D SYSTEM表空间数据文件 E 动态参数文件 F 联机重组日志文件 G 控制文件 答: C SYSAUX表空间数据文件 D SYSTEM表空间数据…

【c++入门】打开新世界大门之初遇c++

前言 在学习了c语言,初阶数据结构后,我们正式走进c世界大门 目录 前言 一、认识c 二、缺省参数 三、函数重载 四、引用 4.1什么是引用? 4.2 使用场景 4.2.1 做参数 4.2.2做函数返回值 4.3引用和指针的区别 五、内联函数 六、auto关…

FIFO和LRU算法实现操作系统中主存管理

FIFO&#xff0c;用数组实现 1和2都是使用nextReplace实现新页面位置的更新 1、不精确时间&#xff1a;用ctime输出运行时间都是0.00秒 #include <iostream> #include <iomanip> #include<ctime>//用于计算时间 using namespace std;// 页访问顺序 int pa…

基于微信小程序的河池旅游设计与实现

一、前言 随着移动互联网的快速发展&#xff0c;微信小程序以其便捷性、无需安装等优势受到广泛关注。河池拥有丰富的旅游资源&#xff0c;包括独特的自然风光&#xff08;如巴马长寿之乡的山水、宜州下枧河风光等&#xff09;、多彩的民族文化&#xff08;如壮族铜鼓文化、仫佬…