大家好,欢迎来到IT知识分享网。
目录
一、概述
Cron 是 Linux 和 Unix-like 操作系统中的一个守护进程(daemon),用于调度周期性任务。Cron 可以安排在特定时间运行的命令,如每天凌晨备份数据库、每周清理日志文件等。Cron 的灵活性和易用性使其成为系统管理员日常工作中不可或缺的工具。
cron 是一种基于时间的作业调度器,它允许用户安排命令或脚本(称为 cron jobs)在后台自动运行,而无需用户手动干预。
这些作业可以基于时间(分钟、小时、日期、月份、星期几)来安排。cron 是 Unix 和类 Unix 系统(包括 Linux)中广泛使用的标准工具之一。
二、Cron 的定义和原理(crontab)
1、原理
Cron 读取一系列配置文件(称为 crontab 文件),这些文件中定义了要运行的任务及其运行时间。Cron 守护进程会定期检查这些配置文件,并根据配置运行相应的命令。
cron 基于 cron 守护进程(cron daemon)工作,这个守护进程在系统启动时自动启动,并持续运行,检查预定的作业是否需要运行。
2、定义
(1)cron 守护进程
cron 守护进程(crond)在系统启动时启动,并在后台持续运行。它定期检查一个或多个 cron 作业表(crontab 文件),以查找需要运行的作业。
– cron 是一个在 Unix 和类 Unix 系统中运行的守护进程,负责处理定时任务。
– 它是一个核心系统服务,负责调度由用户或系统管理员设置的定时任务。
– cron 守护进程在系统启动时自动启动,并持续运行,以检查预定的作业是否需要执行。
(2)crontab文件:
用户的 cron 作业存储在 crontab(cron table 的缩写)文件中。每个用户都可以有自己的 crontab 文件,但系统管理员也可以为所有用户设置系统级别的 crontab 文件。
– crontab 是 cron 守护进程的配置文件,用于定义需要执行的定时任务。
– 每个用户都可以有一个 crontab 文件,其中包含了用户自定义的定时任务。
– crontab 文件由 cron 守护进程读取,并根据文件中定义的时间表来执行任务。
(3)cron 作业
每个 cron 作业由六部分组成,分别表示时间(分钟、小时、日期、月份、星期几)和要执行的命令。
(4)cron和crontab的区别和联系
cron 是负责处理定时任务的服务,而 crontab 是用于配置这个服务的文件。用户通过编辑自己的 crontab 文件来定义定时任务,然后 cron 守护进程会读取这些任务并按照预定的时间表执行它们。
三、 Cron 的配置文件
Cron 的配置文件主要有两类:
1、系统级配置文件
通常位于 /etc/crontab,以及 /etc/cron.d/ 目录下的其他文件。这些文件由系统管理员编辑,用于配置系统级的任务。
2、用户级配置文件
每个用户都可以有自己的 crontab 文件,通过命令 crontab -e 编辑。这些文件用于配置用户的个人任务。
四、Cron 表达式
1、Cron 表达式的格式
Cron 表达式由六个字段组成,用于指定任务的运行频率。格式如下:
* * * * * command_to_execute
解释如下:
– 第一个星号():分钟(0-59)
– 第二个星号():小时(0-23)
– 第三个星号():月份中的哪一天(1-31)
– 第四个星号():月份(1-12 或 JAN-DEC)
– 第五个星号():一周中的哪一天(0-6 或 SUN-SAT,0 和 7 都代表周日)
可以用如下图表示:
2、特殊符号
除了基本的时间字段外,Cron 还支持一些特殊符号,以便更灵活地定义任务的运行时间:
– :匹配所有可能的值。
– ,:用于指定多个值,例如 5,10,15。
– -:用于指定一个范围,例如 5-10。
– /:用于指定间隔,例如 /15 表示每 15 分钟。
– @reboot:在系统启动时运行命令。
– @yearly、@annually:每年运行一次。
– @monthly:每月运行一次。
– @weekly:每周运行一次。
– @daily、@midnight:每天运行一次,在午夜时分。
– @hourly:每小时运行一次。
3、示例
(1)每天凌晨 3 点运行命令 command:
使用如下命令:
0 3 command
(2)每周一上午 9 点运行命令 command:
使用如下命令:
0 9 1 command
(3) 每个月的第一天下午 2 点运行命令 command:
使用如下命令:
0 14 1 command
(4)每 15 分钟运行一次命令 command:
使用如下命令:
/15 command
(5)复杂表达式
0 12 * * * /root/test && cd /src/x64/ && sh abc-stop.sh && sleep 20s && sh abc-start.sh
表示每天晚上12点钟,依次执行如下命令:
/root/test #执行/toot目录下的test程序 cd /src/x64/ #进入目录/src/x64/ sh abc-stop.sh #执行脚本 sleep 20s #睡眠20s sh test-start.sh #执行脚本文件
五、使用 Cron
1、创建和编辑 crontab 文件
(1)用户级 crontab
– 使用 crontab -e 命令编辑用户的 crontab 文件。
– 编辑完成后保存退出。
(2)系统级 crontab
– 编辑 /etc/crontab 文件。
– 编辑 /etc/cron.d/ 下的文件。
2、查看 crontab 文件
(1)用户级 crontab
– 使用 crontab -l 查看用户的 crontab 文件。,如下图所示
(2)系统级 crontab
使用命令
cat /etc/crontab
查看 /etc/crontab 文件。
3、删除 crontab 文件
(1)用户级 crontab
使用 crontab -r 删除用户的 crontab 文件。
六、示例命令(crontab)
1. 创建 crontab 文件
使用如下命令:
crontab -e
2. 查看 crontab 文件
使用如下命令:
crontab -l
实际操作如下图所示:
3. 删除 crontab 文件
使用如下命令:
crontab -r
七、其他
1、权限管理
Cron 通常只允许拥有相应权限的用户和系统管理员配置任务。
2、安全注意事项
确保 cron 作业不会被未经授权的用户修改或利用。
3、路径
如果脚本或命令需要环境变量(如 PATH),请在脚本中显式设置或调用时使用完整路径。
4、邮件
cron 作业的输出通常会通过电子邮件发送给 crontab 文件的所有者,如果系统配置了邮件发送功能。如果不想接收邮件,可以将输出重定向到 /dev/null 或日志文件。
5、系统级别的 crontab 文件
系统级别的 crontab 文件(如 /etc/crontab)的格式可能略有不同,并允许指定运行作业的用户。
八、总结
Cron 是一个强大的工具,用于自动化 Linux 系统中的周期性任务。通过编辑 crontab 文件,用户可以轻松地安排各种命令在特定时间执行。合理利用 Cron 可以显著提高系统的自动化程度和管理效率。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/134301.html