linux之定时任务:crontab

linux系统使用-定时任务:crontab

一、定时任务简介

在Linux中,定时任务是一种机制,允许用户在预定的时间自动执行特定的命令或脚本。它可以通过操作系统自带的cron工具来管理。

1.1cron工具概述
cron是Linux中最常用的定时任务工具,是Linux系统中基于时间的任务调度器,它允许用户在指定的时间点或时间间隔内执行任务。每个用户都有一个crontab文件,用于存储他们的定时任务。cron命令的配置文件由多行组成,每行代表一个定时任务,每个任务由时间字段和要执行的命令组成。时间字段指定任务执行的时间和频率,可以设置分钟、小时、日期、星期和月份。cron任务的精确度最高到分钟级别。

1.2crontab命令简述
我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,可以在以下文件夹内找到相关配置文件。

/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab 这个文件负责调度各种管理和维护任务。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
Linux crontab常用的crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该文件包含了一系列的定时任务,每个任务由一个时间字段和要执行的命令组成。

通常,crontab储存的指令被守护进程激活, 守护进程crond常常在后台运行,并定期检查是否有预定的作业需要执行。默认情况下,crond每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。如果发现有要执行的任务,crond会自动执行它们。

当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:

新创建的 cron 任务,不会马上执行。因为cron任务的执行时间与设置的时间字段和当前时间相关。

当你创建一个cron任务时,它会被添加到cron的任务列表中,并在下一次符合时间条件的时候执行。如果没有符合时间条件的任务,那么任务将在下一个适合的时间点执行。

如果你希望立即执行一个cron任务,可以通过重启cron服务来实现。这样做将重新加载cron配置文件并立即开始执行新添加的任务。

可以使用以下命令重启cron服务:

sudo service crond restart
另外,还有一种方法是手动运行任务的命令或脚本来立即执行任务,而不依赖于cron。这样可以确保任务立即开始执行,而不必等待cron的调度。

总之:

新创建的cron任务不会立即执行,它们会在下一个合适的时间点根据设置的时间字段自动执行。要立即执行任务,可以重启cron服务或手动运行任务的命令或脚本。

二、crontab安装与检查
我安装的是centos7.0版本,按照此版本描述:

2.1安装步骤
在CentOS 7.0上,crontab命令通常是默认安装的。但是可以按照以下步骤来确认并安装crontab:

①确认crontab是否已经安装:

1)使用which命令:which命令用于显示给定命令的完整路径。可以使用which命令来确定是否可以找到crontab可执行文件的路径。

which crontab
结果如图:

2)使用whereis命令:whereis命令用于查找给定命令的二进制文件、源代码和帮助页面等信息。

whereis crontab
结果如图:

在CentOS 7.0中,crontab默认安装路径是/usr/bin/crontab。

②使用以下命令安装crontab:

sudo yum install cronie
运行此命令将安装cronie软件包,其中包含crontab命令和cron守护进程。

③启动cron服务:

sudo systemctl start crond
将启动cron服务,并使其立即生效。

④设置cron服务在系统启动时自动启动:

sudo systemctl enable crond
运行此命令,cron服务将被设置为在每次系统启动时自动启动。

在完成上述这些步骤后,应该能够使用crontab命令来管理定时任务。

2.2查看crontab的状态
执行以下命令:

sudo systemctl status crond
结果如图:

这将显示cron服务(即crond)的当前状态,包括是否正在运行以及最近的日志信息。如果cron服务处于活动状态,它将显示为"active (running)“。如果服务未运行,它可能会显示为"inactive"或"dead”。

另一个命令也是查看状态,即

crontab -l
如果系统中已经安装了crontab,将看到当前用户的定时任务列表。如果显示类似于"no crontab for "的消息,那么crontab尚未安装。如下所示:

区分crontab -l和sudo systemctl status crond:

crontab -l用于查看当前用户的crontab文件中定义的定时任务列表。这个命令列出了当前用户设置的所有定时任务,包括任务的执行时间和要运行的命令。它只能查看当前用户的crontab文件,而无法查看其他用户的定时任务。

sudo systemctl status crond用于查看cron服务(即crond)的状态。这个命令显示cron服务的当前状态,包括是否正在运行以及最近的日志信息。它可以用于检查cron服务是否正常运行。需要管理员权限或root用户身份才能运行该命令。

因此:

crontab -l用于查看用户级别的定时任务列表(用来检查用户的crontab状态,如果crontab已成功安装,则列出当前用户的定时任务列表。如果没有任何输出,则表示该用户没有设置任何定时任务。)

而sudo systemctl status crond用于查看cron服务的状态,会显示cron服务的运行状态、PID(进程ID)、最近的活动记录等。但是需要使用sudo或以root身份运行该命令,因为只有root用户能够查看和管理系统级别的服务。

2.3查看crontab服务
检查crontab服务是否已设置为开机启动,执行以下命令:

sudo systemctl is-enabled crond
该命令将显示crontab服务的启用状态。如果输出为"enabled",则表示crontab服务已设置为开机启动。如果输出为"disabled",则表示crontab服务未设置为开机启动。

另外,还可以使用以下命令来检查crontab服务的启动配置文件是否存在:

ls /etc/systemd/system/multi-user.target.wants/crond.service
如果该命令返回了crond.service文件的路径,则表示crontab服务已经设置为开机启动。如果没有任何输出,则表示crontab服务未设置为开机启动。

如果cron服务未设置为开机启动,可以使用以下命令将其设置为开机启动:

sudo systemctl enable cron
运行此命令后,cron服务将被设置为开机启动。

注意:

这些命令需要管理员权限或root用户身份才能运行。

最后可以再次运行systemctl is-enabled cron命令来验证cron服务的开机启动状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值