0


CentOS系统计划任务Crontab

前言

   CentOS计划任务是一种在Linux系统上自动执行特定任务的功能。在CentOS系统上,我们可以使用crontab命令来创建和管理计划任务。

以下是创建CentOS计划任务的步骤:

1. 打开终端并登录到root账户;
 2. 输入命令“crontab -e”,打开计划任务编辑器;
 3. 编辑器中有7个字段,分别表示分钟、小时、日、月、周、要执行的命令和命令参数;
 4. 每个字段可以使用*(代表任意值)或数字指定特定数值。例如,如果要在每天的上午9点执行任务,则可以使用“0 9 * * * 命令”;
 5. 完成编辑后,按“ctrl+x”保存并退出编辑器。

【注意:在计划任务中使用的命令必须是系统中已安装的可执行文件或脚本。】

1 计划任务概念解析

Linux系统的计划任务是指可以定期执行特定命令或程序的系统工具。计划任务可以自动执行,无需用户干预,可用于定期备份、日志清理、定时任务等。在Linux中,最常用的计划任务工具是crontab。

Crontab是Linux中的一种任务定时工具,可以帮助我们在指定时间自动执行特定的命令或脚本。Crontab可以在系统中设置多个定时任务,每个任务可以设置不同的执行时间、周期和执行命令。

Crontab的语法非常简单,由6个字段组成,分别代表分钟、小时、日期、月份、星期几和要执行的命令或脚本。(简称:分时日月周)例如,下面的Crontab条目表示每天凌晨2点执行一次backup.sh脚本:

0 2 * * * /home/user/backup.sh

Crontab的优点是它可以自动执行和管理任务,无需用户干预。但是,Crontab也有一些注意事项,例如它只能精确到分钟级别,无法处理秒级别的任务;另外,它需要用户具备一定的Linux基础知识才能使用。

2 计划任务分类

Linux计划任务可以分为系统级别和用户级别两种:

  1. 系统级别计划任务:系统级别计划任务通过修改系统的crontab文件来实现,这些任务可以以root用户身份运行,并且可以在整个系统中执行。这些任务通常用于系统级别操作,如备份、日志清理、系统更新等。

  2. 用户级别计划任务:用户级别计划任务可以由每个用户创建自己的crontab文件来实现,这些任务只能在该用户的环境中运行。这些任务通常用于用户级别操作,如邮件提醒、定期备份等。

此外,Linux计划任务还可以按照执行方式分为以下两种:

  1. 定时任务:定时任务是指在一定时间间隔内周期性执行的任务,例如每天、每周或每月执行一次备份操作。

  2. 周期任务:周期任务是指在特定日期或时间执行的任务,例如在某个具体时间点执行特定操作。

3 Crontab详解

【系统默认安装并启动Crontab的,如果没有,根据如下步骤逐个做;如果有,请直接跳转到3.3

3.1 安装软件

使用“yum -y install crontabs”命令安装。

yum -y install crontabs

3.2 启动服务

在Linux系统中,并没有专门的crontab服务需要启动。crontab是Linux系统内置的定时任务工具,在启动系统时就已经加载并启用了。如果你想确认crontab是否已经启用,可以使用以下命令:

systemctl status crond.service

如果crontab正在运行,你会看到以下内容的输出:

如果crontab没有启动,你可以使用以下命令来启动crontab:

systemctl start crond.service

如果你想在每次系统启动时自动启动crontab,可以使用以下命令:

systemctl enable crond.service

这样,crontab服务就会在每次系统启动时自动启动,无需手动启动。

3.3 编辑和保存crontab

要编辑crontab,可以使用以下命令:

crontab -e

这会打开一个文本编辑器,你可以在里面输入要执行的命令或脚本以及相关的时间和执行频率。编辑完成后,可以点击“ESC”键输入“:wq”保存并退出。

【编辑内容如下】

3.3.1 第一部分:时间

范围

0~59

0~23

1~31

1~12

1~7

上面的时间范围可以查看man手册:0

man 5 crontab
“man 5 crontab”

是一个Linux系统中的手册页命令,可以帮助用户了解crontab文件的格式和内容,以及如何编辑和管理crontab文件。

crontab任务的时间格式如下:

* * * * *       command
| | | | | ----- Day of the week (0 - 7) (Sunday is both 0 and 7)
| | | | ------- Month (1 - 12)
| | | --------- Day of the month (1 - 31)
| | ----------- Hour (0 - 23)
| ------------- Minute (0 - 59)

各种时间写法举例:

0 * * * * 每个小时的整点

5 10 * * * 每天的十点五分 *表示每...

1,5,9 * * * * 1,5,9表示:一、五、九分钟 ,表示取不同的范围点

8-12 * * * * 8-12表示八到十二分钟 -表示范围

*/5 * * * * */5表示每隔5分钟

# 每天早上6点运行程序
0 6 * * * /path/to/program

# 每周五晚上9点半备份数据库
30 21 * * 5 /path/to/backup_script.sh

# 每小时运行一次清理脚本
0 * * * * /path/to/clean_script.sh
 

3.3.2 第二部分:动作

把上面规定的时间、要执行的命令写进去,当然包括脚本(最常用),命令最好要写绝对路径。

最终我们使用“crontab -e”命令编写如下命令。

*/10 * * * * /usr/bin/touch /tmp/1.txt

最后编写成功后,保存退出即可。

3.4 查看计划任务

方法一:使用“crontab -l”命令。

crontab -l

方法二:使用“cat /var/spool/cron/root”命令。

cat /var/spool/cron/root

3.5 删除计划任务

使用“crontab -r”命令删除计划任务。

【使用这条命令将删除所有的定时任务,谨慎使用!】

crontab -r

一般我们删除计划任务使用“crontab-e”命令进去删除所想删除的任务就好。

我们删除刚才所编辑的计划任务,然后使用“crontab -e”查看,发现显示“no crontab for root
”即表示我们删除成功!

3.6 计划任务的权限控制

在CentOS系统中,Cron服务的功能是在超级用户root的权限下运行的,因此,只有root用户才能够控制和编辑CentOS系统的计划任务。

当然,如果你想让其他用户也能够控制和编辑计划任务,可以将他们添加到“crontab”或“cron.allow”文件中。具体步骤如下:

(1)创建“cron.allow”文件,如果该文件不存在的话。可以使用以下命令进行创建:

touch /etc/cron.allow

(2)向“cron.allow”文件中添加允许控制计划任务的用户名。例如,如果你想允许“user1”和“user2”控制计划任务,可以使用以下命令:

echo "user1" >> /etc/cron.allow
echo "user2" >> /etc/cron.allow

(3)保存“cron.allow”文件以后,运行以下命令重启Cron服务:

systemctl restart crond

这样,用户“user1”和“user2”就可以通过“crontab -e”命令来编辑和控制计划任务了。

!!!需要注意的是,如果同时存在“cron.allow”和“cron.deny”文件时,只有在“cron.allow”文件中列出的用户才能够控制和编辑计划任务。因此,在安全性方面,建议只使用“cron.allow”来控制用户的权限。

【注意事项】

1.crontab的时间是按照系统时间执行的,当系统时间出现变化时,crontab的执行时间可能会受到影响。可以使用“date”命令查看系统时间。

2.crontab的执行结果会输出到标准输出,可以使用重定向或者管道符将结果输出到指定的文件中。

3.crontab任务的执行权限和环境变量需要与执行用户匹配,否则任务可能无法执行或者产生不确定的结果。

4.要在crontab中使用环境变量,需要先定义环境变量在crontab中。

5.crontab的执行频率最好不要太高,以免占用过多系统资源。

创作不易,给个三连吧~

标签: centos linux 运维

本文转载自: https://blog.csdn.net/m0_64304713/article/details/133499255
版权归原作者 Mortalz7 所有, 如有侵权,请联系我们删除。

“CentOS系统计划任务Crontab”的评论:

还没有评论