Linux- cron调度进程

cron 是一个 Unix 类操作系统中的时间调度守护进程,用于在特定的时间或间隔运行指定的命令或脚本。它非常适合自动化系统管理和维护任务,如备份、日志轮转、系统监控等。以下是 cron 守护进程的详细介绍。

cron 守护进程的工作原理

  1. crontab 文件

    • cron 从称为 crontab(cron table)的文件中读取任务计划。每个用户都有自己的 crontab 文件,系统级任务在 /etc/crontab/etc/cron.d/ 目录中定义。
    • crontab 文件中每行定义一个计划任务,包括时间表达式和要执行的命令。
  2. 定期检查

    • cron 守护进程每分钟检查一次 crontab 文件和目录 /var/spool/cron/crontabs//etc/cron.d//etc/crontab,以确定是否有任务需要执行。
  3. 执行任务

    • 当当前时间与 crontab 文件中的时间表达式匹配时,cron 执行相应的命令或脚本。

crontab 文件格式

crontab 文件中的每一行代表一个任务,格式如下:

* * * * * command_to_be_executed
- - - - -
| | | | |
| | | | +----- 一周中的星期几 (0 - 7) (星期天为 0 或 7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)

例如,每天凌晨 2 点运行备份脚本:

0 2 * * * /path/to/backup.sh

常用的 crontab 命令

查看 crontab 文件
crontab -l
编辑 crontab 文件
crontab -e
删除 crontab 文件
crontab -r
从文件安装 crontab
crontab filename

系统级 crontab 文件

除了用户级 crontab 文件外,还有一些系统级 crontab 文件:

  • /etc/crontab:系统级的 crontab 文件,格式与用户级略有不同。它包含了一个用户字段,指定哪个用户运行任务。

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root# m h dom mon dow user command
    0 2 * * * root /path/to/backup.sh
    
  • /etc/cron.d/ 目录:可以包含多个任务文件,文件中的每行格式与 /etc/crontab 相同。

cron 特殊字符串

cron 还支持一些特殊的字符串,用于简化时间表达式:

  • @reboot:在系统重启后运行。
  • @yearly@annually:每年运行一次,相当于 0 0 1 1 *
  • @monthly:每月运行一次,相当于 0 0 1 * *
  • @weekly:每周运行一次,相当于 0 0 * * 0
  • @daily@midnight:每天运行一次,相当于 0 0 * * *
  • @hourly:每小时运行一次,相当于 0 * * * *

例如,每次系统重启后运行脚本:

@reboot /path/to/startup.sh

安全性和最佳实践

  1. 限制访问

    • 仅允许受信任的用户编辑和安装 crontab 文件。
    • 使用 /etc/cron.allow/etc/cron.deny 文件控制哪些用户可以使用 crontab 命令。
  2. 日志记录

    • 配置 cron 日志记录,以监控任务执行情况和故障。
    • /etc/rsyslog.conf/etc/rsyslog.d/ 配置文件中确保 cron 日志记录是启用的,例如:
      cron.* /var/log/cron.log
      
  3. 使用绝对路径

    • crontab 中指定命令和脚本的绝对路径,确保任务在预期的位置运行。
  4. 环境变量

    • crontab 文件中设置必要的环境变量,如 PATH,确保任务能够找到需要的命令和脚本。
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    

例子

用户级 crontab 示例
# 每天凌晨 1 点运行备份脚本
0 1 * * * /usr/local/bin/backup.sh# 每小时检查一次磁盘使用情况
0 * * * * /usr/local/bin/check_disk.sh# 每月 1 号凌晨 2 点清理日志文件
0 2 1 * * /usr/local/bin/clean_logs.sh
系统级 crontab 示例
# /etc/crontabSHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# m h dom mon dow user command
0 3 * * * root /usr/local/bin/system_backup.sh
15 4 * * 7 root /usr/local/bin/weekly_report.sh

通过了解和正确配置 cron 守护进程,可以实现系统管理和维护任务的自动化,极大提高工作效率和系统可靠性。

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

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

相关文章

上海市计算机学会竞赛平台2022年5月月赛丙组三数排序

题目描述 给定三个整数 𝑎,𝑏,𝑐a,b,c,请将它们以从小到大的顺序排序后输出。 输入格式 单独一行:三个整数表示 𝑎,𝑏,𝑐a,b,c。 输出格式 单独一行:表示按升序排列…

汇聚荣:拼多多长期没有流量如何提高?

在电商的海洋中,拼多多以其独特的团购模式吸引了众多消费者的目光。然而,随着市场竞争的加剧和消费者需求的多样化,一些商家发现自家店铺的流量持续低迷,销售业绩难以突破。面对这样的挑战,如何有效提升拼多多店铺的客…

【Python】学生管理系统

为了了解Json以及在python中如何处理Json数据,我在这里整理了一段全面详细的 Python 代码,演示了如何加载、处理和操作 JSON 数据。该代码包括读取 JSON 数据、查询学生信息、添加新学生、更新课程信息等操作。 示例代码 import json# 示例 JSON 数据 …

深视 线扫相机 获取点云数据

Qt hello - 专注于Qt的技术分享平台 最近项目上用到了深视的线扫相机,集成了三天才搞定,分享下代码。 顺便吐槽一下,想用相机取图,这么简单的功能,搞得如此麻烦。 1,文档有三份,就不能集成到…

【计算机毕业设计】springboot反诈科普平台的设计与实现

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低反诈科普平台的运营人员成本,实现了反诈科普平台的 标准化、制度化、程序化的管理,有效地防止了反诈科普平台的随意管理,提高了信息的处理速度和精确度,能够…

python中字符串的 format() 方法

文章目录 前言1、位置参数2、索引参数3、命名参数3、格式化参数 前言 format() 是 Python 字符串对象的方法,用于将值插入到格式化字符串的占位符中。它是一种灵活和强大的字符串格式化工具。format() 方法可以在字符串中使用占位符 {},并通过传递参数将…

[vue] nvm

nvm ls // 看安装的所有node.js的版本nvm list available // 查显示可以安装的所有node.js的版本可以在可选列表里。选择任意版本安装,比如安装16.15.0 执行: nvm install 16.15.0安装好了之后。可以执行: …

字符数组以及字符串相关的几个函数

一.字符数组 1.定义:格式如下 char a[10]; //此处就表示定义了一个长度为10的字符数组 2.引用: 也和其余的数组一样,是下标引用。 3.初始化: 如下代码为字符数组初始化的几种情况: int main() {char arr[5] {…

25考研英语长难句Day03

25考研英语长难句Day03 【a.词组】【b.断句】 多亏了电子学和微力学的不断小型化,现在已经有一些机器人系统可以进行精确到毫米以下的脑部和骨骼手术,比技术高超的医生用手能做到的精确得多。 【a.词组】 词组翻译thanks to多亏了,由于cont…

【JavaEE进阶】 Bean的作用域与生命周期

文章目录 🍃Bean的作用域🚩作用域的使用🚩观察Bean的作用域🎈单例作用域🎈多例作用域🎈请求作用域🎈会话作⽤域🎈Application作⽤域 🎄Bean的⽣命周期⭕总结 &#x1f34…

win11家庭中文版安装docker,报错 Docker Engine stopped

先引一下这位博主的链接超详细Windows11家庭中文版系统安装Docker-20230401_windows11安装docker-CSDN博客,我到前五步(跳出页面重启)和博主都是一样的,但是第六步我并没有报错,直接跳出docker界面 记录一下我的解决办法,首先按照…

金价又双叒涨了!现货黄金什么比较好

虽然近期有新闻显示,国内的实物黄金价格出现大幅的下跌,但是从整体看,多个黄金投资品种的长期上升趋势还是比较稳定的,因此我们会看到,很多投资者会趁现在这波下跌重新入场做多。那么投资黄金买什么比较好呢&#xff1…

Java中的类与对象-深入探索

在Java编程的世界里,类(Class)和对象(Object)是两个核心概念。它们是面向对象编程(OOP)的基石,使得Java能够处理复杂的数据结构和交互。本文将深入解析Java中的类和对象,…

浅述遥感技术在农业领域的应用

虽久未更新,但本文依旧延续以前叙述风格,即以通俗易懂方式描述关键问题。 本文章节安排如下: 简述背景;介绍在农业领域的主要应用技术的关键问题;总结和实例介绍。 1 背景描述-何为遥感图像? 一般来说&a…

如何向全国各大新闻网站投稿?

在信息爆炸的时代,新闻媒体的投稿工作对于单位的信息宣传员来说,既是一项重要的职责,也是一项充满挑战的任务。作为一名信息宣传员,我负责着单位的对外信息宣传投稿工作,每个月都需要在各大媒体上发表文章,以展示单位的成果和风采。 然而,刚开始的投稿之路并不顺畅。我习惯性地…

4种企业防泄密的办法,强烈推荐第二种

4种企业防泄密的办法,强烈推荐第二种 企业信息泄密常见的原因有内部人员、黑客、违规收集信息、第三方合作商,以下将为你详细分析这些泄密原因以及应对的方法。 1、内部人员泄密 内部员工由于能够接触到敏感数据,成为主要的泄露数据群体。这…

springboot 序列化和反序列化

介绍 在Java中,序列化和反序列化是一种将对象转换为字节流或将字节流转换为对象的机制。通过序列化,可以将对象存储到文件中、传输到网络上,或者在分布式系统中进行对象的传递。本文将详细介绍Java序列化和反序列化的原理、使用方法和常见应用…

优路教育:以实干、创新、永不言败的精神内核,推动新时代职教发展

随着“教育家精神”的提出,新时代下人民教师的职业内涵更为丰富,同时也被赋予了更为崇高的教育使命。强教必先强师,加强教师队伍建设是建设教育强国重要的基础工作。由此,打造一批勤勉敬业、创新实干的教师队伍,成为了…

2024最新洗地机推荐,洗地机怎么选?热门品牌哪个最好用?

在现代生活中,忙碌的日常让家庭清洁变得更加繁重和耗时。然而,洗地机的引入彻底改变了这一状况。凭借其强大的清洁效果和简便的使用方式,洗地机能够迅速清除地面上的各种污垢,使清洁工作变得轻松自如。正因为如此,洗地…

JWT生成token工具类实现

JWT简介 JWT定义 JWT全称为Json web token,也就是 Json 格式的 web token JWT数据结构 1.JWT由三段字符串组成,中间用.分隔 Project_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzE2MzcwMTM0LCJpYXQiOjE3MTU3NjUzMzQsImp0aSI6IjllO…