Linux 【crontab 命令】循环调度执行

Linux 【crontab 命令】循环调度执行crontab 是 Linux 系统中用于设置周期性被执行的指令的命令

大家好,欢迎来到IT知识分享网。

crontab 是 Linux 系统中用于设置周期性被执行的指令的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

Linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

查看配置文件:

vim /etc/crontab

Linux 【crontab 命令】循环调度执行

如果软件不存在安装:

yum -y install crontabs #启动: ystemctl start crond.service

语法

crontab 选项

选项:

-u<user> : 定义用户

-e : edit:编辑用户的crontab

-l : list:列出用户的crontab

-r : remove:删除用户的crontab

-n<host> : 为某用户设置的crontab(仅root可用)

-x<mask> : 启用调试

示例

1.添加定时任务 :每天12点执行 t.sh 脚本

crontab -e #给用户 tom 添加定时任务 crontab -e -u tom

Linux 【crontab 命令】循环调度执行

Minutes Hours Day-of-Month Month Day-of-Week Command 分钟 小时 日 月 周 执行的命令,最好是命令的绝对路径 0-59 0-23 1-31 1-12 0-7 * * * * * 每小时的某一分钟 每天的某小时 每月的某天 每年的某月

2.查看任务列表:查看当前用户的任务列表

crontab -l #查看用户 tom 的任务列表 crontab -l -u tom

Linux 【crontab 命令】循环调度执行

3.删除用户的 crontab 文件

crontab -r #删除用户 alan 的 crontab 文件 crontab -r -u alan

Linux 【crontab 命令】循环调度执行

特殊:

* 每分钟/小时/…..

*/n 表示每 n (分钟/小时……)个时间间隔执行一次

, 不同的时间段

a-b 表示范围a-b分钟/小时……

#每天6点执行 0 6 * * * /home/t.sh #每月1号的早上6点执行 0 6 1 * * /home/t.sh #每年2月1号的早上6点执行 0 6 1 2 * /home/t.sh #每周六凌晨4:00执行 0 4 * * 6 /home/t.sh #每隔5分钟执行 */5 * * * * /home/t.sh #每隔30分钟执行 */30 * * * * /home/t.sh #每周早上9:30-10:30 30 9-10 * * 1 /home/t.sh #每周一到周五早上9:30 30 9 * * 1-5 /home/t.sh #每天6,12,18点执行 00 6,12,18 * * * /home/t.sh #每月1,5,8号的2:00整执行 00 02 1,5,8 * * /home/t.sh #每月1号和15号检查/home 磁盘 0 0 1,15 * * fsck /home

* * * * *

每分钟执行一次

0 * * * *

每小时的第 0 分钟执行一次

0 0 * * *

每天的午夜(0 点)执行一次

0 0 * * 0

每周日的午夜(0 点)执行一次

0 0 1 * *

每个月的第一天午夜(0 点)执行一次

0 0 L * *

每个月的最后一天午夜(0 点)执行一次

0 0 1 1 *

每年的第一天午夜(0 点)执行一次

0 0 * * 3

每周三的午夜(0 点)执行一次

0 0 1,15 * *

每个月的第 1 和第 15 天午夜(0 点)执行一次

0 0 * * FRI

每周五的午夜(0 点)执行一次

0 0 * * 5

每周五的午夜(0 点)执行一次

0 8-17 * * *

每天的上午 8 点到下午 5 点每小时执行一次

0 12 * * MON

每周一的中午(12 点)执行一次

0 0 15 * *

每个月的第 15 天午夜(0 点)执行一次

0 0 * * 3

每周三的午夜(0 点)执行一次

0 8-17 * * *

每天的上午 8 点到下午 5 点每小时执行一次

0 0 * * 1-5

每个工作日的午夜(0 点)执行一次

0 0 1 * FRI

每个月的第一个星期五午夜(0 点)执行一次

0 0 1,15 * *

每个月的第 1 和第 15 天午夜(0 点)执行一次

0 0 15 1 *

每年的 1 月 15 日午夜(0 点)执行一次

0 0 * * 7

每周日的午夜(0 点)执行一次

0 0 * * 5

每周五的午夜(0 点)执行一次

脚本无法执行问题

如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

解决方法:

1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker。

2、在 shell 脚本开头使用以下代码:

#!/bin/sh . /etc/profile . ~/.bash_profile

3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:

20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137999.html

(0)
上一篇 2025-06-16 14:26
下一篇 2025-06-16 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信