linux下crond服务,Linux之定时任务Crond详解

article/2025/10/16 3:51:47

定时任务Crond介绍

Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。

Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。

必须保留的启动服务:

crond:定时任务服务

network:网络服务

rsyslog:日志服务

sshd:远程链接服务

sysstat:系统监控服务(涉及一系列监控工具)

7f67b97978f4bd579a95ac512b247ba6.png

为什么要使用定时任务呢?

我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?

这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

ls -l /var/log/messages* #系统的日志

ls -l /var/log/secure* #用户登录日志

用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。

服务器时间同步

echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1" >> /var/spool/cron/root

可通过上面的命令设置每5分钟执行一次。每次将互联网时间同步到本地Linux系统。

crontab -l 查看当前用户的定时任务配置。*号 下面会详讲~~

time.nist.gov是NTP服务器地址 time.windows.com,微软自家的时间服务器。 更多请参考 ==> 国内常用NTP服务器地址及IP

1671c0a545f48d5c029de80faed992e2.png

crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行。这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。

1、开机自启动crond服务

81b314e94717b3fbd160b1a051c6421d.png

2、此时此刻服务的状态(查看,开启,关闭)

35ecc53fc4200ccad5fb98b4244baa03.png

3、如何查看进程

ps -ef | grep crond

249da94bfa9f01f1f25fc7c0951c6789.png

小结提示:

我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令

crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略

几乎每个服务器都会用到crond服务

上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)

定时任务Crond使用说明

[root@chengliang ~]# crontab --help

crontab: invalid option -- '-'

crontab: usage error: unrecognized option

usage: crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

(default operation is replace, per 1003.2)

-e (edit user's crontab)

-l (list user's crontab)

-r (delete user's crontab)

-i (prompt before deleting user's crontab)

-s (selinux context)

[root@chengliang ~]#

crontab -l 查看当前用户的定时任务配置

crontab -e 进入当前用户的定时任务vim编辑模式

crontab -u 用户名 -l 查看指定用户的定时任务设置

bf4fa94592a4ca0a944333abbef3a42d.png

重点

通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等企业运维场景工作

e1fe71da38773c38493e685af5f8d6a8.png

使用者权限及定时任务文件

文件

说明

/etc/cron.deny(拒绝)

该文件中所列用户不允许使用crontab

/etc/cron.allow(允许)

该文件优先级高于cron.deny(默认不存在,一般不用)

/var/spool/cron/

所有用户crontab配置文件默认都存在此目录,文件名以用户名命名

[root@chengliang ~]# cat /etc/cron.deny

zcl

[root@chengliang~]# su - zcl

[chensiqi@chengliang~]$ crontab -l

You (chensiqi) are not allowed to use this program (crontab)

See crontab(1) for more information

[zcl@chengliang~]$ crontab -e

You (chensiqi) are not allowed to use this program (crontab)

See crontab(1) for more information

crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件

默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root

[root@chengliang ~]# ls /var/spool/cron/

root #默认是没有的,只有创建了定时任务才有

[root@chengliang ~]# cat /var/spool/cron/root

*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段

208f7173f02e4adb3cd5235af0b6c0f7.png

用户定时任务实例:

01 * * * * cmd #每小时的01分钟执行

02 04 * * * cmd #每天4点的02分钟执行

22 14 * * 00 cmd #每周日的14点22分执行

42 04 01 * * cmd #每月1日的4点42分执行

提示:

1、cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh

2、每个列之间必须要有一个空格。多个空格可以么?自己实践  ==> 经我本人测试有多个空格也可以执行!!

时间记忆口诀:分时日月周

crontab 语法格式中特殊符号含义如下表

特殊符号

含义

*

*号,表示任意时间都,实际就是“每”的意思

-

减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd

逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd

/n

n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成/*10* * * * cmd,其中,/10,的范围是0-59,因此也可以写成0-59/10

ceab96494ebd31259fc1c828686b99f9.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


http://chatgpt.dhexx.cn/article/rfbv3c1K.shtml

相关文章

Linux crond命令使用介绍

目录 前言一、crond简介系统任务调度用户任务调度 二、crond服务三、crontab命令详解1.命令格式2.命令功能3.命令参数4.常用方法1). 创建一个新的crontab文件2). 列出crontab文件3). 编辑crontab文件4). 删除crontab文件5). 恢复丢…

linux 查看crond服务器,CentOS安装crond服务

初学Linux, 太多太多的问题,让我不得不有头疼的时候,比如学到Cron建立计划任务时,却发现我的虚拟机没有安装cron本身, 为了安装这个,我也花了不少周折,现总结如下: 1.先检查Linux是否已经安装cr…

定时任务crond

一、定时任务(crond) 1.什么crond:crond就是计划任务,类似于我们平时生活中的闹钟,定点执行 。2.为什么要用crond:计划任务主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。或11点开启网站抢购接口,1…

linux crond定时任务,Linux之定时任务Crond使用

Linux之定时任务Crond使用 一、用法 crond服务是linux系统自带的服务,是不需要手动安装的; crond服务是一种守护进程; Linux中的用户使用contab命令来配置corn任务; crontab –e : 修改 crontab 文件,如果文件不存在会自动创建; crontab –l : 显示 crontab 文件; cront…

Linux的基本操作——crond定时任务

一、crond简介 1、基本介绍 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每…

数组之二维数组

目录 一、二维数组的定义与引用 1、二维数组的定义 2、二维数组的引用 二、二维数组的赋值 1、二维数组的初始化 三、二维数组的应用举例 一、二维数组的定义与引用 1、二维数组的定义 一般格式: 类型说明符 数组名 [常量表达式1] [常量表达式2]; 其中…

JavaScript一维数组转二维数组

[1, 2, 3, 4, 5, 6, 7, 8] 实现效果 [[1, 2, 3, 4], [5, 6, 7, 8]] 1. slice截取 function fn(arr, num) {let newArr []const total Math.ceil(arr.length / num)console.log(total);for (let i 0; i < total; i) {a arr.slice(i * num, (i 1) * num)newArr…

js一维数组转二维数组(生成二维数组)

昨天遇到了一个需要对后端传来的一段数据做操作&#xff0c;是将一维数组转为二维数组&#xff0c;思考了半天&#xff0c;夜晚又和朋友讨论了一下&#xff0c;思路如下。&#xff08;毕竟我只是个切图仔&#xff09; let classRes [{className: 05,name: a1,age: 12,sex: 1},…

JS二维数组赋值问题

背景 定义二维数组并赋值 let list new Array(5).fill(new Array(3).fill(0))此时在给二维数组赋值时使用如下代码&#xff1a; list[2][1] 2看下赋值结束后的打印结果&#xff1a; 未达到预期。 ES6解析 我们看下阮一峰在es6中对fill的定义&#xff1a; 理解 这样就…

JavaScript 二维数组转一维数组

目录 1. flat() 2. reduceconcat 3. [ ].concat 4. concat.apply 5. toString split &#xff08;字符串或数值&#xff09; 6. 遍历判断 7.多维数组转一维数组 1. flat() 语法&#xff1a;var newArray arr.flat([depth]) depth(深度)&#xff1a;指定要提取嵌套数…

JavaScript生成二维数组

方法一&#xff1a; new Array(x).fill(new Array(y).fill(0)) 但注意&#xff0c;当一个对象被传递给fill方法时&#xff0c;填充数组的是这个对象的引用。即二维数组的第一个维度中的每一个数组都指向同一个引用&#xff0c;如果向第一个维度中的任一元素执行push&#xff0c…

js一维数组转二维数组

使用场景举例&#xff1a;接口返回一个数组对象&#xff0c;展示时每行固定显示n个&#xff0c;则可将返回的数组转成二维数组[[...n], [...n]...]的形式循环展示。 a.数组元素为基本类型&#xff1a; let baseArray [1, 2, 3, 4, 5, 6, 7, 8];len len baseArray.length;let …

js二维数组变为一维数组

1、用es5的reduce和concat组合 let list[[1,2,3],[4,5,6],[7,8],[9]]let listslist.reduce((a,b)>a.concat(b))console.log(lists)reduce的用法 数组方法reduce用来迭代一个数组&#xff0c;并且把他累积到一个值中。 使用 reduce 方法时&#xff0c;你要传入一个回调函数…

JavaScript 二维数组

二维数组&#xff1a;人为起的名字 二维数组本质上是以数组作为数组元素的数组&#xff0c;即“数组的数组”&#xff0c;类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵&#xff0c;行列数相等的矩阵称为方阵。对称矩阵a[i][j] a[j][i]&#xff0c;对角矩阵…

js 二维数组

js二维数组 我们经常会用到二维数组&#xff0c;但是javaScript没有二维数组&#xff0c;那么我们应该咋办呢&#xff1f;就是在一维数组里面在创建一个一维数组。 var arr new Array(10); for (var i 0; i < arr.length; i) {arr[i]new Array(8); //不一定写for循环赋值…

程序员必看的数组详解!

数组 什么是数组&#xff1f; 数组是一组数据有序的集合。数组它是属于复合数据类型。它至少可以存储一个值(它可以存储很多很多值)。 例如我们生活中的仓库&#xff0c;可以存放很多我们需要的工具或物品 为什么要使用数组&#xff1f; 因为在我们工作中 有很多数据是有关…

JavaScript二维数组和函数

一、二维数组 1、什么是二维数组&#xff1f; 通过两个下标&#xff08;索引&#xff09;来确定一个元素。二维数组可以理解为数组的数组。二维数组组织为矩阵&#xff0c;可以表示为行和列的集合。 2、创建方式 2.1、通过new Array&#xff08;&#xff09;创建 2.2、通过…

JavaScript之二维数组

JavaScript本身只支持一维数组&#xff0c;不支持直接定义二维数组&#xff0c;但是我们可以间接地实现二维数组 将一维数组的每个元素又定义为一个数组&#xff0c;即为数组中的元素也是数组&#xff0c;就是二维数组 <!DOCTYPE html> <html lang"en">…

Linux 信号signal\sigaction

转发&#xff1a;作者&#xff0c;故事狗 https://www.jianshu.com/p/f445bfeea40a Linux 信号signal 对于 Linux来说&#xff0c;实际信号是软中断&#xff0c;许多重要的程序都需要处理信号。信号&#xff0c;为 Linux 提供了一种处理异步事件的方法。比如&#xff0c;终端…

linux下sigaction函数,Linux sigaction函数 sa_flags的值

开始对sa_flags有疑问&#xff0c;网上搜到都是这一个程序&#xff0c;就复制来说事&#xff1a; 代码&#xff1a; 1 #include 2 #include 3 #include 4 #include 5 6 void show_handler (int sig) 7 { 8 printf ("i got signal %d\n",sig); 9 …