大家好,欢迎来到IT知识分享网。
crontab 是 Linux 系统中用于设置周期性被执行的指令的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
Linux 任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
查看配置文件:
vim /etc/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
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
3.删除用户的 crontab 文件
crontab -r #删除用户 alan 的 crontab 文件 crontab -r -u alan
特殊:
* 每分钟/小时/…..
*/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