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 Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2023-12-24 16:16:49 CST; 12s ago
  Process: 8293 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 7518 (crond)
    Tasks: 1
   Memory: 640.0K
   CGroup: /system.slice/crond.service
           └─7518 /usr/sbin/crond -n
                                                                                                                                                                                 
12月 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.mfbz.cn/a/760040.html

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

相关文章

C++ | Leetcode C++题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {unordered_map<int, int> rightmostValueAtDepth;int max_depth -1;stack<TreeNode*> nodeStack;stack<int> depthStack;nodeStack.push(ro…

【数据结构】(C语言):二叉搜索树

二叉搜索树&#xff1a; 树不是线性的&#xff0c;是层级结构。基本单位是节点&#xff0c;每个节点最多2个子节点。有序。每个节点&#xff0c;其左子节点都比它小&#xff0c;其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。…

leetCode.98. 验证二叉搜索树

leetCode.98. 验证二叉搜索树 题目描述 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(n…

鱼叉式钓鱼

鱼叉式网络钓鱼&#xff1a; 鱼叉式网络钓鱼是一种网络钓鱼形式&#xff0c;它针对特定个人或组织发送定制消息&#xff0c;旨在引发特定反应&#xff0c;例如泄露敏感信息或安装恶意软件。这些攻击高度个性化&#xff0c;使用从各种来源收集的信息&#xff0c;例如社交媒体资…

sky18流水线设计

1.最大时钟频率确定 时钟周期要大于等于组合逻辑的delay&#xff08;最大的那条delay&#xff09; Freq_max(Mhz) 1000/T_delay(ns); 数据吞吐率Throughput Freq_max *Toggle_rate;//Toggle_rate&#xff1a;如两个时钟&#xff0c;输入变一次&#xff0c;就是50%&#xff1b…

【考研408计算机组成原理】微程序设计重要考点指令流水线考研真题+考点分析

苏泽 “弃工从研”的路上很孤独&#xff0c;于是我记下了些许笔记相伴&#xff0c;希望能够帮助到大家 目录 微指令的形成方式 微指令的地址形成方式 对应考题 题目&#xff1a;微指令的地址形成方式 - 断定方式 解题思路&#xff1a; 答题&#xff1a; 分析考点&…

大模型系列课程学习-基于2080TI-22G魔改卡搭建双卡大模型训练平台(双系统)

1.选择合适的硬件配置 再配置电脑之前&#xff0c;需要确认自己需要的显存大小、主板、内存条、电源、散热等核心配件。经过前期调研&#xff0c;选择的硬件配置如下&#xff1a; &#xff08;1&#xff09;主板&#xff1a;华南X99_F8D(DDR4主板)&#xff0c;因为需要支持双卡…

1Panel运维利器:功能详解与实操指南

官网地址:https://1panel.cn/ 1Panel简介 1Panel是杭州飞致云信息科技有限公司旗下产品&#xff0c;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;于2023年3月推出。 名称&#xff1a;1Panel开源Linux面板 所属公司&#xff1a;杭州飞致云信息科技有限公司 编写语…

基于HarmonyOS NEXT开发智能提醒助手

目录 目录 目录 前言 关于HarmonyOS NEXT 智能提醒助手需求分析 智能提醒助手设计 1、系统架构 2、功能模块 智能提醒助手的应用场景 智能提醒助手的竞争力 具体技术实现 未来展望 结束语 前言 随着智能设备的普及和物联网技术的飞速发展&#xff0c;人们对于智能…

忙忙碌碌的混沌之中差点扑了个空而错过年中这条线

文章目录 前言初见端倪混沌初始力不从心心力交瘁拾遗补缺总结 前言 突然意识到过完这个周末已经7月份了&#xff0c;他预示着我的2024年已经过半了&#xff0c;过年回家仿佛还是昨天的事情&#xff0c;怎么转眼间已经到了年中了。心里还是不愿承认这件事&#xff0c;翻开自己2…

Nacos配置中心客户端源码分析(一): 客户端如何初始化配置

本文收录于专栏 Nacos 推荐阅读&#xff1a;Nacos 架构 & 原理 文章目录 前言一、NacosConfigBeanDefinitionRegistrar二、NacosPropertySourcePostProcessor三、AbstractNacosPropertySourceBuilder总结「AI生成」 前言 专栏前几篇文章主要讲了Nacos作为服务注册中心相关…

github主页这样优化,让人眼前一亮

我的主页&#xff08;一之十六&#xff09; 1. 创建与账户ID同名的仓库 注意&#xff1a;记得勾选Add a README file 2. markdown语法自定义README.md 3. 辅助工具 优秀profile&#xff1a;https://zzetao.github.io/awesome-github-profile/动态文字&#xff1a;https://r…

SpringMVC(1)——入门程序+流程分析

MVC都是哪三层&#xff1f;在Spring里面分别对应什么&#xff1f;SpringMVC的架构是什么&#xff1f; 我们使用Spring开发JavaWeb项目&#xff0c;一般都是BS架构&#xff0c;也就是Browser&#xff08;浏览器&#xff09;-Server&#xff08;服务器&#xff09;架构 这种架构…

谷歌开发者新号上架攻略:开发者实战经验分享

前段时间&#xff0c;不少开发者朋友们在纷纷在吐槽新账号没法上架成功。以前谷歌对新号是真的很严格&#xff0c;但现在情况似乎有所好转。 今天&#xff0c;和大家聊聊如何在新号成功上架上“快人一步”&#xff0c;以及怎样增加账号权重提高上架成功率。 首先&#xff0c;我…

成绩发布背后:老师的无奈与痛点

在教育的广阔天地里&#xff0c;教师这一角色承载着无数的期望与责任。他们不仅是知识的传播者&#xff0c;更是学生心灵的引路人。而对于班主任老师来说&#xff0c;他们的角色更加多元&#xff0c;他们不仅是老师&#xff0c;还必须是“妈妈”。除了像其他老师一样备课、上课…

Linux文件系统与设备文件

一、Linux文件操作 Linux的文件系统API主要涉及创建、打开、读写、定位、关闭文件 创建 int creat(const char *filename, mode_t mode);mode: 代表新建文件的存取权限&#xff0c;需要和umask相与才能确定最终权限(mode&umask)。 umask代表文件在创建时需要去掉的存取…

8.12 矢量图层面要素单一符号使用十(箭头线渲染边界)

前言 本章介绍矢量图层线要素单一符号中箭头线渲染边界的使用说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 箭头线渲染边界&#xff08;Outline: Arrow&#xff09; Outline系列只画边界&#xff0c;不填充内容以protected_areas.shp为例&#xff0c;图…

Spring 动态增强逻辑执行分析

1、假如UserService中存在被增强的public 普通方法&#xff0c;那么spring ioc时就会创建对应的代理对象放置到容器中&#xff1b; 2、那么Controller中注入的userService就是代理对象&#xff1b; Service public class UserService {Transactionalpublic void f2(String us…

【训练篇】MLU370-M8 完成 qwen1.5-7b-chat-lora训练及推理

文章目录 前言一、平台环境配置二、环境 or 模型准备1.模型下载2.环境准备2.1 modelscope2.2 transformers2.3 accelerate2.4 deepspeed2.5 peft2.6 环境代码修改 3训练代码准备4 代码修改 三&#xff0c;训练后推理验证四.推理效果展示1.微调前2.微调后 前言 本期我们采用魔塔…

【雷达原理】雷达测角原理及实现方法

目录 一、雷达测角原理1.1 测角研究历史和现状1.2 测角方法总结1.3 3DFFT测角1.3.1 基本原理1.2.2 测角性能 二、MATLAB仿真案例参考文献 一、雷达测角原理 1.1 测角研究历史和现状 &#xff08;1&#xff09;早期采用窄波束对准目标&#xff0c;目标的角度对应于天线的角度读…