Rocky Linux cronie-定时任务

2024-12-02 53
Rocky Linux

类型:Linux发行版

简介:与RHEL完全兼容,具有企业级稳定性及开源等优势。

Rocky Linux上,定时任务的管理由Cronie完成。Cronie是一个基于时间的自动化任务调度工具,它可以自动化地按预定时间执行命令或脚本。本文将帮助大家了解如何使用Cronie定时任务(crontab)来自动运行脚本。

一、环境要求

1、一台运行 Rocky Linux 的计算机。

2、熟悉如何使用命令行编辑器(本文将使用 “vi”)。

3、基本的 bash、Python 或其他脚本/编程语言的知识。

4、你已通过 SSH 登录到系统,且有权限(root 或 UID 大于 1000 的普通用户)。

二、Cronie简介

Cronie 是 Linux 系统中用于定时任务调度的服务。它通过一个守护进程(”crond”)来执行任务,并且支持周期性地运行脚本。Cronie 的相关组件如下:

1、cronie:任务调度的主程序包,Rocky Linux 默认包含。

2、crontab:每个用户用来管理定时任务的命令。

3、crond.service:Cronie 的守护进程,可以通过 “systemctl” 命令进行管理(启动、停止、重启等)。

4、/etc/crontab:系统级别的 cron 配置文件,允许管理员分配任务给不同用户。

5、/var/spool/cron/:保存每个用户的定时任务文件。

6、/var/log/cron:Cronie 的日志文件。

三、Crontab命令

“crontab” 是安装 Cronie 后获得的命令,常用选项包括:

-e # 编辑定时任务
-l # 查看定时任务
-r # 删除当前用户所有 crontab 任务

四、使用Cronie

要使用 Cronie 定时任务,可以编辑用户的 crontab 文件。通常我们使用 “crontab -e” 命令编辑定时任务。

shell > cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 注意: 所有 # 开头的行都是注释说明, 可随意修改添加
# 默认 * 代表所有, 比如每一分钟/每一小时/每一天均执行命令
# 更多说明详见 man 4 crontabs
# 任务定义示例:
# .---------------- 指定分钟 (0-59)
# | .-------------- 指定小时 (0-23)
# | | .------------ 每月第几天 (1-31)
# | | | .---------- 指定月份 (1-12) 或月份前三个字母缩写 jan,feb,mar,apr ...
# | | | | . ------- 每周第几天(0-6) (周日=0 或 7) 或者 sun, mon, tue, wed, thu, fri, sat
# | | | | | 
# * * * * * 要执行的用户名 要执行的命令

Rocky Linux cronie-定时任务

在 crontab 文件中,每一行的格式如下:

Rocky Linux cronie-定时任务

示例:每天晚上 10 点执行备份脚本

假设你希望每天晚上 10 点执行一个备份脚本,首先运行:

crontab -e

然后在编辑器中输入以下内容:

00 22 * * * /usr/local/sbin/backup

这行命令表示每天晚上 10 点(22:00)执行 “/usr/local/sbin/backup” 脚本。编辑完成后,按下 “Esc” 键退出插入模式,然后输入 “:wq” 保存并退出。

注意:要确保脚本具有可执行权限,否则定时任务不会执行。可以通过 “chmod +x /usr/local/sbin/backup” 命令来赋予脚本执行权限。

复杂选项:

如果你需要设置更复杂的定时任务,Cronie 提供了多种选项:

1、每 10 分钟执行一次备份:

*/10 * * * * /usr/local/sbin/backup

2、每周一、三、五每 10 分钟执行备份:

*/10 * * * 1,3,5 /usr/local/sbin/backup

3、每天 10 分钟一次(但不在周六和周日):

*/10 * * * 1-5 /usr/local/sbin/backup

五、Cronie表达式解析

1、*:代表所有时间单位。例如,第一个 “*” 表示任意分钟,第二个 “*” 表示任意小时。

2、,:表示多个非连续的时间。例如,”0 8,12,16 * * *” 表示每天 8:00、12:00 和 16:00 执行。

3、-:表示一个连续的时间范围。例如,”0 5 * * 1-6″ 表示每周一至周六的 5 点执行。

4、*/n:表示执行频率间隔。例如,”*/10 * * * *” 表示每 10 分钟执行一次。

输出重定向:

定时任务运行时可能会产生输出,这些输出有时会导致任务执行失败。为了避免这种情况,可以将输出重定向到 “/dev/null”:

*/10 * * * * /usr/local/sbin/backup &> /dev/null

六、常见问题解答

1、”/etc/crontab” 和 “crontab -e” 有什么区别?

  • “crontab -e” 编辑的是当前用户的定时任务,系统不需要显式指定用户;
  • “/etc/crontab” 是系统级别的 cron 配置文件,需要明确指定执行任务的用户。

2、定时任务没有执行怎么办?

  • 检查 “/var/log/cron*” 日志,查看任务是否被触发;
  • 使用 “journalctl -u crond.service” 查看 “crond” 守护进程的日志;
  • 确保脚本有执行权限(”chmod +x”);
  • 确保任务没有报错或产生输出阻止执行,必要时使用输出重定向。

3、除了 Cronie,还有其他类似的 cron 变体吗?

  • “fcron”(最新版本为 3.3.0,2016年8月14日发布)
  • “cronsun”(最新版本为 0.3.5,2018年11月20日发布)
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。