Linux基础 - 定时计划

目录

零. 简介

一. cron

二. crontab 

三. cron和crontab的区别

四. 例子


零. 简介

在 Ubuntu 系统中可以使用 crontab 来设置定时计划任务。crontab 是 Linux 下的无图形界面的计划任务工具,它可以在无需人工干预的情况下运行作业。

一. cron

在 Ubuntu 系统中可以使用 cron 来设置定时计划任务。cron 是 Linux 下的无图形界面的计划任务工具,它可以在无需人工干预的情况下运行作业。以下是在 Ubuntu 16.04 及其衍生版本中设置定时计划任务的一般步骤:

安装 cron

   sudo apt install cron

开通并开启 cronie 后台服务:

   sudo systemctl enable cron.servicesudo systemctl start cron.service

建立一个计划任务文件并编辑,例如创建一个名为 MyCrontab 的文件(名字可以随便取):

   touch ~/MyCrontab && nano ~/MyCrontab 

然后参考下面的 crontab 写法举例来编辑这个文件。

载入计划任务到 cron 服务模块中:

   crontab ~/MyCrontab 

查看 crontab 计划,确认是否一切就绪:

   crontab -l 

  crontab 的语法格式如下:

m h dom mon dow command

其中各字段的含义和取值范围如下:

  • m:表示分钟,可以是从 0 到 59 之间的任何整数。
  • h:表示小时,可以是从 0 到 23 之间的任何整数。
  • domday of month 的缩写,表示日期,可以是从 1 到 31 之间的任何整数。
  • monmonth 的缩写,表示月份,可以是从 1 到 12 之间的任何整数。
  • dowday of week 的缩写,表示星期几,可以是从 0 到 7 之间的任何整数,其中 0 和 7 都代表星期天,也可以使用名称来表示,如 sun 表示星期天,mon 表示星期一等。
  • command:待执行的命令。

一些常用的 crontab 写法举例如下:

  • */1 * * * * date>>~/crontest:每 1 分钟执行一次 date>>~/crontest 命令(用 date>>~/crontest 可以很清楚地看到测试效果)。
  • 5 * * * * ls:指定每小时的第 5 分钟执行一次 ls 命令。
  • 30 5 * * * ls:指定每天的 5:30 执行 ls 命令。
  • 30 7 8 * * ls:指定每月 8 号的 7:30 分执行 ls 命令。
  • 30 5 8 6 * ls:指定每年的 6 月 8 日 5:30 执行 ls 命令。
  • 30 6 * * 0 ls:指定每星期日的 6:30 执行 ls 命令。
  • 30 3 10,20 * * ls:每月 10 号及 20 号的 3:30 执行 ls 命令(注:“,”用来连接多个不连续的时段)。
  • 25 8-11 * * * ls:每天 8-11 点的第 25 分钟执行 ls 命令(注:“-”用来连接连续的时段)。
  • */15 * * * * ls:每 15 分钟执行一次 ls 命令,即每个小时的第 0、15、30、45、60 分钟执行 ls 命令。
  • 30 6 */10 * * ls:每个月中,每隔 10 天 6:30 执行一次 ls 命令,即每月的 1、11、21、31 日的 6:30 执行一次 ls 命令。
  • 50 7 * * * root run-parts /etc/cron.daily:每天 7:50 以 root 身份执行 /etc/cron.daily 目录中的所有可执行文件(注:run-parts 参数表示执行后面目录中的所有可执行文件)。

需要注意的是,cron 是分用户的,系统级别的命令(如 /sbin/reboot 等)应该用 root 身份来编辑和载入 crontab。服务器推荐以 root 身份设置 cron,而 Linux 桌面系统的话可以使用普通用户。普通用户的 crontab 即便普通用户不登录也会自动执行,但如果普通用户载入的 crontab 中有只有 root 才能运行的命令,如 mkdir /test1,那么它将不会被执行。

另外,在编辑 crontab 计划任务时,还需注意以下几点:

  • 可以使用 crontab -e 编辑 cron 计划,但这个只会更改内存中的 crontab 任务。为了避免意外,建议先编辑硬盘上的计划任务文件(如上述的 ~/MyCrontab 文件),然后用 crontab ~/MyCrontab 载入。

二. crontab 

在 Ubuntu 中,可以使用 crontab 命令来创建、编辑和管理定时任务。crontab 是一个用于设置周期性被执行指令的工具。

crontab 的基本语法如下:

  • crontab -e:编辑用户的 crontab 文件。
  • crontab -l:列出用户当前的 crontab 内容。
  • crontab -r:删除用户的 crontab 文件。
  • crontab -i:在删除用户 crontab 文件之前进行确认。

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

plaintext

* * * * * command

其中,五个星号分别表示分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、星期(0-7,0 表示星期天),command 则是要执行的命令或脚本。

通配符的含义如下:

  • *:代表所有可能的值。例如,在分钟字段上表示每分钟。
  • ,:用于指定多个值。
  • -:用于表示一个范围值。
  • /:用于表示重复的频率。例如,*/2 在分钟字段上表示每两分钟。

以下是一些定时任务的示例:

  • 0 0 * * * /path/to/your/script.sh:每天午夜执行 /path/to/your/script.sh 脚本。
  • 0 2 * * * /path/to/another/script.sh > /path/to/logfile.log 2>&1:每天凌晨 2 点执行 /path/to/another/script.sh 脚本,并将标准输出和标准错误都追加到 /path/to/logfile.log 文件中。
  • */5 * * * * /usr/bin/some_command:每 5 分钟执行一次 /usr/bin/some_command 命令。

在 Ubuntu 中,cron 服务默认已安装。可以通过以下命令操作该服务:

  • service cron status:查看服务运行状态。
  • service cron start:启动服务。
  • service cron stop:停止服务。
  • service cron restart:重启服务。

需要注意的是,每个用户都可以有自己的 crontab 文件,存储在 /var/spool/cron 目录中;root 用户的 crontab 文件通常存储在 /etc/crontab 文件中;使用 crontab 命令需要具有足够的权限;crontab 启动时会读取 crontab 文件并加载定时任务,可以使用 service crond restart 命令将其重新加载。

另外,在设置定时任务时,无论是命令还是脚本,建议使用绝对路径以确保准确性。如果定时任务涉及到环境变量或需要特定的运行环境,可能需要在脚本中进行相应的设置或使用完整的命令路径。同时,新创建的定时任务不会马上执行,可能需要过几分钟后才会生效,也可以通过重启 cron 服务来立即生效。

三. cron和crontab的区别

“cron”和“crontab”都与定时任务相关,但含义略有不同。“cron”通常指的是在系统后台运行的守护进程(daemon),它负责按照预定的时间表来执行任务。

“crontab”则是用于管理定时任务的命令或配置文件。通过“crontab -e”命令可以编辑用户的定时任务配置,这些配置信息被称为“crontab”。

简单来说,“cron”是执行定时任务的服务,而“crontab”是用于设置定时任务的工具和配置文件。

四. 例子

  1. 每天早上 8 点发送一封提醒邮件:
0 8 * * * mail -s "Daily Reminder" user@example.com < /path/to/reminder.txt
  1. 每周一凌晨 3 点备份数据库:
0 3 * * 1 mysqldump -u username -p password database > /path/to/backup/backup.sql
  1. 每月 1 号的 12 点清理临时文件:
0 12 1 * * rm -rf /tmp/temporary_files/*
  1. 每 30 分钟执行一次系统更新检查:
*/30 * * * * sudo apt-get update
  1. 每天晚上 10 点重启网络服务:
0 22 * * * sudo systemctl restart networking
  1. 每年 1 月 1 日的 0 点生成年度报告:
0 0 1 1 * /path/to/script/generate_annual_report.sh
  1. 每 2 小时同步一次数据:
0 */2 * * * rsync -avz source/ destination/
  1. 每逢周五下午 5 点将工作目录压缩备份:
0 17 * * 5 tar -czf /backup/workdir_$(date +\%Y\%m\%d).tar.gz /path/to/workdir

30秒 往 txt 文件 写入一个数:

* * * * * /path/to/your/script.sh
* +30 * * * * /path/to/your/script.sh

上述配置中,第一个命令表示每分钟的第 0 秒执行脚本,第二个命令表示每分钟的第 30 秒执行脚本,从而近似实现每 30 秒执行一次的效果。 

然后您需要创建一个执行写入操作的脚本 script.sh,示例如下(假设您使用 Bash 脚本)

#!/bin/bashecho "Some number" >> /path/to/your/txt_file.txt

效果图

若要编辑 crontab 任务,可以使用 crontab -e 命令。编辑完成后,系统会自动保存并生效。使用 crontab -l 命令可以列出当前用户的所有 crontab 任务。

如果是以其他用户身份设置 crontab 任务,需要使用 -u 参数指定用户名,例如管理员以其他用户身份编辑 crontab 任务的命令为:crontab -u linuxteck -e 。只有具有足够权限的用户(如 root 用户或超级用户,或者被赋予了特权的普通用户)才能执行该操作。查看其他用户的 crontab 任务的命令为:crontab -u linuxteck -l 。

同时,确保要执行的命令或脚本具有可执行权限,并且路径是正确的。如果在定时任务中使用的是脚本,建议在脚本的开头指定解释器,例如 #!/bin/bash 表示使用 Bash 解释器来执行该脚本。如果定时任务中的脚本需要使用特定的环境变量或依赖于某些环境设置,可以在 crontab 任务中添加相应的环境变量设置或在脚本中自行处理环境配置。

有些系统可能默认没有启动 cron 服务,需要使用相应的命令启动,例如 /sbin/service crond start 。还可以通过 chkconfig 或其他系统管理工具设置 cron 服务在开机时自动启动。

此外,crontab 不支持按秒来设置计划任务。如果需要更精确的时间控制,可能需要考虑其他方式来实现。并且,在实际应用中,要注意脚本的执行时间和资源消耗,避免多个任务同时运行导致系统负载过高。如果任务执行时间较长或资源消耗较大,可以考虑适当调整执行时间或优化任务本身。同时,定期检查 crontab 任务的执行情况,确保任务按照预期正常运行。如果任务出现异常或错误,可以查看系统日志(如 /var/log/cron)来获取相关信息进行排查和解决。

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

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

相关文章

[ARM-2D 专题]3. ##运算符

C语言的宏系统相当强大&#xff0c;它允许使用##符号来处理预处理期的文本替换。这种用法被称为标记连接&#xff08;token pasting&#xff09;操作&#xff0c;其结果是将两个标记紧紧地连接在一起&#xff0c;而省略掉它们之间的所有空格。在复杂的宏定义中&#xff0c;运用…

13 物理层介质及设备

物理层介质及设备 一、线缆的连接 &#xff08;一&#xff09;线序 ​ 线序&#xff1a; RJ-45连接头12345678568A绿白绿橙白蓝蓝白橙棕白棕568B橙白橙绿白蓝蓝白绿棕白棕 ​ 1、2发送&#xff0c;3、6接收 &#xff08;二&#xff09;线缆的应用 1.线缆的连接 ​ 标准…

边缘计算为企业解决数据问题,提升业务效率和竞争力-天拓四方

企业在当前数字化时代面临着一系列具体的问题和挑战&#xff0c;这些问题往往与数据处理、实时响应、安全性以及运营成本等方面密切相关。边缘计算作为一种新兴的计算模型&#xff0c;能够有效地帮助企业解决这些问题&#xff0c;提升业务效率和竞争力。 首先&#xff0c;企业…

业务架构交付物

背景 业务的核心元素、扩展元素以及它们的协同关系&#xff0c;业务架构和其他架构的关系等等已经有了不少认识&#xff0c;那么&#xff0c;通过对业务架构的还原和分析&#xff0c;到底能够得到什么业务架构的内容呢&#xff1f;它可以是一套流程框架体系&#xff0c;也可以…

el-dialog使用::v-deep()穿透设置样式不生效,解决办法亲测有效!

场景&#xff1a; <el-dialogv-model"dialogVisible"width"800px":before-close"beforeClose"append-to-body:close-on-click-modal"false"title"增加文档"><template #footer><div style"text-align:c…

电梯开关状态人员进出检测数据集VOC+YOLO格式2220张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2220 标注数量(xml文件个数)&#xff1a;2220 标注数量(txt文件个数)&#xff1a;2220 标注…

YOLOv10(6):YOLOv10基于TensorRT的部署(基于INetworkDefinition)

1. 写在前面 我们在前面已经讲过很多关于YOLOv10的一些知识点&#xff0c;也简单理了一下如何训练自己的数据。 现在本篇文章主要是讲解一下如何在TensorRT中部署YOLOv10&#xff0c;相信经过这一步&#xff0c;各位小伙伴已经能够无限的接近于将YOLOv10产品化了。 另一个需要说…

C++学习合集

#整理到一块&#xff0c;方便查东西&#xff0c;顺便补充一些之前没有学习到的东西# 变量 char--1字节 short--2字节 int-4字节 long--4字节 long long(int)--8字节&#xff1b;准确来说变量的大小取决于编译器&#xff0c;1字节8个二进制位&#xff0c;其中最高位为符号位…

【系统架构设计师】五、计算机网络(概念|通信技术|网络技术)

目录 一、计算机网络概念 二、通信技术 三、网络技术 3.1 局域网(LAN) 3.1.1 局域网拓扑结构 3.1.2 局域网协议 3.2 无线局域网(WLAN) 3.3 广域网(WAN) 3.4 城域网&#xff08;MAN) 3.5 移动通信网 四、组网技术 4.1 OSI七层模型 4.1.1 交换机 4.1.2 路由器 4.2…

Linux下环境变量配置与解读

文章目录 1.linux下查找java的安装目录&#xff08;没有配置环境变量&#xff09;2.配置文件加载解读3.配置java环境变量 1.linux下查找java的安装目录&#xff08;没有配置环境变量&#xff09; 执行如下命令&#xff0c;查看版本信息&#xff0c;确定java已经安装 java -vers…

DataWhale - 吃瓜教程学习笔记(三)

学习视频&#xff1a;第3章-对数几率回归_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 3.3 对数几率回归 sigmoid函数 极大似然估计建模 信息论 以概率论、随机过程为基本研究工具&#xff0c;研究广义通信系统的整个过程 - 信息熵 &#xff08;信息期望&#xff09; 度…

Easyui Datagrid 解决页面加载重复请求2次后端问题

现象 在页面刚刚打开时&#xff0c;页面加载完毕&#xff0c;显示查询数据&#xff0c;连续请求网络2次&#xff0c; 第一次是只携带了 分页参数&#xff1b; 第二次携带分页和查询参数 问题出现原因 html代码中利用class声明了datagrid&#xff0c;导致easyUI解析class代…

STM32 DAC模块的应用(FW_F1_V1.8.5)

目录 概述 1 STM32Cube配置项目 1.1 软件版本信息 1.2 配置DAC模块参数 1.3 GENERATE Project 2 DAC库函数介绍 2.1 初始化函数&#xff1a;HAL_DAC_Init 2.2 启动DAC数据转换&#xff1a;HAL_DAC_Start 2.3 停止DAC数据转换&#xff1a;HAL_DAC_Stop 2.4 设置通道数…

【软件下载】Camtasia Studio 2024详细安装教程视频

习惯上来说Camtasia Studio是一款简单易用的高清录屏和视频编辑软件&#xff0c;拥有录制屏幕和配音、视频的剪辑和过场动画片、添加说明字幕和水印、制作视频封面和菜单、视频压缩和播放。不得不说Camtasia是一款屏幕录制和视频剪辑软件&#xff0c;教授课程&#xff0c;培训他…

剑指offer 算法题(搜索二维矩阵)

剑指offer 第二题 去力扣里测试算法 思路一&#xff1a; 直接暴力遍历二维数组。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (unsigned int i{ 0 }; i < matrix.size(); i){for (unsigned int j{ 0 };…

【NLP练习】Transformer实战-单词预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 参考链接&#xff1a; LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT 任务&#xff1a;自定义输入一段英文文本进行预测 一、定义模型 from tempfi…

多维表格/业务库表格大数据量性能瓶颈

先说最终结论&#xff1a;Angular 组件创建性能损耗是当下主要的性能瓶颈 理由&#xff1a; 基于以往编辑器性能优化的经验&#xff0c;编辑器在动态渲染内容时会创建很多壳子组件&#xff08;也就是Angular 组件&#xff09;&#xff0c;排查的时候就发现如果略这些壳子组件性…

Day9 —— 大数据技术之ZooKeeper

ZooKeeper快速入门系列 ZooKeeper的概述什么是ZooKeeper&#xff1f;ZooKeeper的特点和功能使用ZooKeeper的原因 ZooKeeper数据模型ZooKeeper安装ZooKeeper配置ZooKeeper命令行操作常见服务端命令 ZooKeeper的概述 什么是ZooKeeper&#xff1f; ZooKeeper是一个开源的分布式协…

ZOOM太卡怎么办?公司如何解决ZOOM会议卡顿?

ZOOM作为一种常见的办公工具&#xff0c;尤其在跨国公司和外资企业中&#xff0c;在线会议非常普遍。然而&#xff0c;由于ZOOM的服务器部署在国外&#xff0c;国内用户使用时可能会遇到卡顿、不稳定和声音断续等问题。那么&#xff0c;如何有效解决ZOOM卡顿的问题呢&#xff1…

数据库管理-第212期 上期SQL性能优化勘误与扩展(20240624)

数据库管理212期 2024-06-24 数据库管理-第212期 上期SQL性能优化勘误与扩展&#xff08;20240624&#xff09;1 环境2 方案1问题3 问题引申总结 数据库管理-第212期 上期SQL性能优化勘误与扩展&#xff08;20240624&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海…