Crontab命令详解:轻松驾驭Linux定时任务,提升系统效率

​🌈 个人主页:danci_
🔥 系列专栏:《设计模式》《MYSQL》
💪🏻 制定明确可量化的目标,坚持默默的做事。


引言:

        crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件,与Windows下的计划任务类似。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

        Linux下的任务调度分为两类,系统任务调度和用户任务调度。系统任务调度是系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

        Linux下的crontab是一个用于设置周期性被执行的任务的工具。用户可以使用crontab命令来编辑、查看或删除定时任务。在Linux系统中,crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。

        crontab储存的指令被守护进程激活,通常被称为cron jobs。crond在后台运行,每一分钟检查是否有预定的作业需要执行。如果使用控制文件被修改了,cron守护进程(crond)不必被重启,而是直接读取文件。

目录

一、crond服务管理命令

二、crontab 命令

2.1 crontab 命令格式

2.2 任务配置说明

2.3 配置规则注意事项


一、crond服务管理命令

service crond start    // 启动服务
service crond stop     // 关闭服务
service crond restart  // 重启服务
service crond reload   // 重新载入配置
service crond status   // 查看服务状态

        安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。

执行命令如下:

(base)[root@uat ~]#service crond start
Redirecting to /bin/systemctl start crond.service
(base)[root@uat ~]#service crond stop
Redirecting to /bin/systemctl stop crond.service
(base)[root@uat ~]#service crond restart
Redirecting to /bin/systemctl restart crond.service
(base)[root@uat ~]#service crond reload
Redirecting to /bin/systemctl reload crond.service
(base)[root@uat ~]#service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since 日 2023-12-24 16:16:49 CST; 12s agoProcess: 8293 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)Main PID: 7518 (crond)Tasks: 1Memory: 640.0KCGroup: /system.slice/crond.service└─7518 /usr/sbin/crond -n12月 24 16:16:49 uat.drd.gzhxrcb systemd[1]: Started Command Scheduler.
12月 24 16:16:49 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 86% if used.)
12月 24 16:16:49 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (running with inotify support)
12月 24 16:16:49 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
12月 24 16:16:55 uat.drd.gzhxrcb systemd[1]: Reloading Command Scheduler.
12月 24 16:16:55 uat.drd.gzhxrcb systemd[1]: Reloaded Command Scheduler.
12月 24 16:17:01 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (running with inotify support)

二、crontab 命令

        crontab 命令是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。

        命令使用原则:

· 如果两个文件都不存在,则只有root用户才能使用crontab命令。
· 如果cron.allow存在, cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
· 如果cron.deny存在, cron.allow不存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
· /etc/cron.allow优先级高于/etc/cron.deny
· 都存在情况下,只有写入/etc/cron.allow文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。若用户同时有/etc/cron.allow和/etc/cron.deny中,则/etc/cron.deny被忽略。

        Linux系统默认只有/etc/cron.deny文件,如下图所示:

2.1 crontab 命令格式

[root@localhost ~]# crontab [选项] [file]

说明:

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

示例:

        查看内在使用情况:

        有一天我发现框中的区域即缓存的内存非常的高,可用内在非常的低,有一些应用启动不起来,于是写了一个清缓存的脚本,如下:

[root@drd app]# vi cleanBuffCache.sh
#!/bin/bash
echo "开始清理缓存"
# 写入硬盘,防止数据丢失
sync;sync;sync;
# 延迟10S
sleep 10
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
echo "清理缓存结束"

        然后配置crontab如下:

[root@drd app]# crontab -e
0 0 * * * /home/***文件绝对路径***/cleanBufferCache.sh

        当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。

        然后使用 service crond reload 命令重新载入配置,使刚刚配的任务生效。(或者用service crond restart 或 service crond stop 再service crond start 均可)

2.2 任务配置说明

语法:

minute hour day month week command

        如上配置0 0 * * * /home/***文件绝对路径***/cleanBufferCache.sh

  • 第一个0(minute):表示一小时当中的第0分钟,可用 * 表示任务分钟。取值范围 0 ~ 59
  • 第二个0(hour):表示一天当时第0小时,可用* 表示任务小时。取值范围 0 ~ 23
  • 第三个 *(day):表示一个月当中的第几天。取值范围 1 ~ 31
  • 第四个* (month):表示一年当中的第几个月。取值范围 1 ~ 12
  • 第五个* (week):表示一周当中的星期几。0 ~ 7 (0 和 7 是星期日)
  • 第六个参数(command):要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。(本示例为可执行的脚本文件)

特殊符号说明:

  • * (星号):表示任务时间。如第一个(左边第一个)代表一小时中每分钟都执行一次的意思。
  • ,(逗号):表示不连续的时间。如 0,15,25 * * * * 表示每小时0分钟、15分钟 和 25分钟都执行一次命令。
  • -(中杠):表示连续的时间范围。如 0 8-12 * * * 表示8点到12点0分都执行一次命令。
  • /(正斜线):表示每隔多久执行一次。比如 */25 * * * * ,表示每隔25分钟执行一次命令。

示例:

配置规则说明
45 22 * * *在 22 点 45 分执行命令
0 17 * * 1在每周一的 17 点 0 分执行命令
0 5 1,15 * *在每月 1 日和 15 日的凌晨 5 点 0 分执行命令
40 4 * * 1-5在每周一到周五的凌晨 4 点 40 分执行命令
*/10 4 * * *在每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 *
在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆
0 6 * * *
每天早上6点执行
0 */2 * * *
每两个小时
0 11 4 * 1-3
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 4 1 1 *
1月1日早上4点

推荐Crontab命令​执行时间工具网站:crontab执行时间计算 - 在线工具可以此网站来测试和验证CRON表达式的执行计划。

   

2.3 配置规则注意事项

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理变得混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

注:2.2 第六个参数 command是一个可执行命令和可执行的文件,若此参数是文件一定要把这个文件的权限修改为可执行的文件,否则不生效。

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

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

相关文章

AI agent是什么,什么技术栈

AI agent,也称为会话代理或聊天机器人, 是一种通过文本或语音模拟人类对话的计算机程序。 它们旨在以自然且引人入胜的方式理解和响应用户输入。 AI agent 被广泛用于各种应用中,包括客户服务、营销、 销售和教育。 有两种主要类型的 AI agen…

Qt开发报错:Q_INTERFACES Error: Undefined interface

1、背景 VS2019qt5.12.10 从svn拉下来的项目,结果报错: Q_INTERFACES Error: Undefined interface 之前在VS的扩展中在线安装了qt插件, 安装了一半,比较慢,直接强行退出了。。 后来安装了qt官网的插件。。。。 2、报…

nginx架构学习

前言 这篇文章主要记录下对nginx架构的学习记录。 架构设计 优秀的模块化设计 高度模块化的设计是Nginx的架构基础。在Nginx中,除了少量的核心代码,其他一切皆 为模块。 在这5种模块中,配置模块与核心模块都是与Nginx框架密切相关的&…

Pharmacy Management System v1.0 文件上传漏洞(CVE-2022-30887)

前言 CVE-2022-30887 是一个存在于 Pharmacy Management System v1.0 中的远程代码执行(RCE)漏洞。这个漏洞存在于 /php_action/editProductImage.php 组件中。攻击者可以通过上传一个精心制作的图像文件来执行任意代码。 漏洞详细信息 漏洞描述: Pha…

第二十三课,再识字符串

前言,再识字符串 字符串是我们学习python编程第一眼见到的东西,一行print(“hello world”)可谓是太亲切了,但在此之前我们对字符串的认知也仅局限于如何用单引号、双引号、三引号去定义字符串并打印,今天开始我们就更深入地去理…

【大数据】StarRocks的系统架构

StarRocks 架构简洁,整个系统的核心只有 FE(Frontend)、BE (Backend) 或 CN (Compute Node) 两类进程,方便部署与维护,节点可以在线水平扩展,元数据和业务数据都有副本机制,确保整个系统无单点。…

轻松解锁电脑强悍性能,4000MHz的玖合星舞 DDR4 内存很能打

轻松解锁电脑强悍性能,4000MHz的玖合星舞 DDR4 内存很能打 哈喽小伙伴们好,我是Stark-C~ 很多有经验的电脑玩家在自己DIY电脑选购内存条的时候,除了内存总容量,最看重的参数那就是频率了。内存频率和我们常说的CPU主频一样&…

通用管理页面的功能实现

在Windows Forms(WinForms)应用程序中,创建一个通用的管理页面通常涉及对数据的增删改查(CRUD)操作,以及一些额外的功能,如数据过滤、排序、导出和导入等。 先看一个仓库管理页面要素。 仓库管…

uniapp开发H5、手机APP、微信小程序 可拖动菜单按钮

ml-fab 插件地址:https://ext.dcloud.net.cn/plugin?id18909 1、可拖拽悬浮按钮 ml-fab,支持自定义插槽,点击可展开一个图标按钮菜单,可随意拖拽。 2、支持自定义插槽,可实现自定义配置。 3、操作简单易上手。 ml-f…

同元软控受邀出席2024年工业软件与新质生产力创新发展论坛

近日,由广东省工业软件学会主办的“2024年工业软件与新质生产力创新发展论坛”在广州成功举办。同元软控深圳子公司副总经理周胜受邀出席,并作《数智驱动创新,科学计算与系统建模仿真加速新质生产力进化》主题演讲。 本次论坛集结工业软件界…

【IVI】CarService启动-Android13

【IVI】CarService启动-Android13 1、CarServiceImpl启动概述2、简要时序图 1、CarServiceImpl启动概述 【IVI】CarService启动: CarServiceHelperService中绑定CarServiceICarImpl初始化各种服务 packages/services/Car/README.md 2、简要时序图

PCIe物理层_CTLE(continuous time linear equalizer)

1.CTLE(continuous time linear equalizer) 的作用 信号在介质的传输过程中存在趋肤效应(skin effiect)和能量损耗,在接收端数据会存在失真,并且呈现出低通特性。什么意思呢?就是低频率的信号衰减幅度小&#xff0c…

音频接口电路的PCB设计

Audio接口是音频插孔,即音频接口,可分为Audio in接口和Audio out接口。音频接口是连接麦克风和其他声源与计算机的设备,其在模拟和数字信号之间起到了桥梁连接的作用。对于平台的数字音频接RK3588口,需遵循《Rockchip RK3588 High…

本地项目上传到GitHub上(李豆)

本地项目上传到GitHub上(李豆) 准备工作: 本地需要有 git 也需要有一个 GitHub 账号 首先需要在 GitHub 新建一个空仓库 在想要上传项目的文件夹中使用 Git 命令操作 初始化: git init与 github 仓库进行链接 :git remote add origin …

isspace()方法——判断字符串是否只由空格组成

自学python如何成为大佬(目录): https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isspace()方法用于判断字符串是否只由空格组成。isspace()方法的语法格式如下: str.isspace() 如果字符串中只包含空格&…

[深入理解DDR] 总目录

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 蓝色的是传送门,点击链接即可到达指定文章。 图。 DDR 分类 导论 [RAM] DRAM 导论:DDR4 | DDR5 | LPDDR5 | GDRR6 | HBM 应运而生 运存与内存?内存与存…

AI大模型API:驱动人工智能创新的核心引擎

在当今快速发展的人工智能领域,AI大模型API成为了开发者必备的利器。这些API为开发者提供了强大的人工智能模型和算法,使他们能够轻松地构建智能化应用和解决方案。作为开发者,我们可以借助AI大模型API实现自然语言处理、图像识别、声音合成等…

Arduino IDE 的安装与esp32项目的创建

1打开官网下载 官网 1-1下载完成后安装即可,会弹出一些按安装提示点击安装 2切换为中文模式 2-1点击Flie,在点击图中高亮的位置,进入 2-2选择语言 3创建esp32项目 3-1在线安装(不一定成功,可以一直试) …

Vue3学习(一)

创建组件实例:我们传入 createApp 的对象实际上是一个组件 import { createApp } from vue // 从一个单文件组件中导入根组件 import App from ./App.vueconst app createApp(App) 大多数真实的应用都是由一棵嵌套的、可重用的组件树组成的。 App (root compone…

问题处理记录与深入:系统线程耗尽,Java无法调用native方法新建线程

1. 问题处理记录 1.1 问题描述 公司使用Presto作为OLAP查询引擎,Presto的coordinator节点在运行过程中报错 java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reachedat java.base/java.lang.Thre…