当前位置: 首页 > Linux

[Linux]定时任务crontab

时间:2023-04-06 04:49:59 Linux

在Linux或类Unix系统中,crontab命令通常用于在指定时间执行一个shell脚本或一系列Linux命令,通常称为定时任务。一、cron进程在详细介绍crontab之前,我们必须先说一下cron进程。1、cron进程是linux中的守护进程。它在系统后台运行。它会不断检查/etc/crontab文件、/etc/cron.*/目录、/var/spool/cron/目录(默认每分钟一次),读取并执行定时任务。2、所有用户创建的crontab文件存放在/var/spool/cron/目录下,由cron服务定时检查。2.crontab命令:crontab命令可以用来创建、编辑、查询和删除定时任务。通过crontab命令,每个用户都可以编辑或配置自己的定时任务,拥有自己的crontab文件。1、创建/编辑crontab文件在linux命令行输入crontab-e创建或编辑用户自己的crontab文件:crontab-e当crontab文件不存在时创建;存在时进行编辑;,可以输入特定的crontab命令来添加、修改或删除当前用户的某个任务。在crontab文件中,每条命令行代表一个定时任务!2.crontab语法(字段介绍)在crontab-e之后,可以输入crontab命令。具体语法如下:12345/path/to/commandarg1arg2或者:12345/root/ntp_sync.sh中各字段格式:{minute}{hour}{day-of-month}{month}{day-of-week}{full-path-to-shell-script}minute(0-59)hour(0-23)date(1-31)month(1-12)某个dayoftheweek(0-7[7or0representsSunday])要执行的脚本或命令的完整路径3、crontab命令示例(和第四部分operator的使用方法一起学习)#每5分钟运行一次backupscript脚本##*/5****/root/backupscript.sh###每天早上1点运行backupscript脚本##01***/root/backupscript.sh###在每个月的第一天凌晨3:15运行backupscript脚本##1531**/root/backupscript.sh###备份作业在每个工作日(周一至周五)的11:59运行下午5923**1,2,3,4,5/root/bin/backup.shor:5923**1-5/root/bin/backup.sh###每周六日3:00执行hello.shin10minutes103**0,6hello.sh###晚上11:00到早上8:00每两个小时,每天早上8:00输出信息到文件023-7/2,8***echo"祝你好梦:)">>/tmp/test.txt###每月4号和每周一到周三上午11点执行命令0114*1-3命令可以把一些经常做的事情放在里面,简化工作量,比如每周一检查服务器的运行状态,查看报告,杀掉一些进程等等...4.crontab命令辅助运算符operator允许为一个字段指定多个值,这里有三个可用的运算符:星号(*):代表任何时间例如在小时字段中,星号相当于每小时;在月份字段中,星号代表每个月。逗号(,):在一个字段上指定多个值,例如:1,5,10,15,20,25bar(-)font>:指定一个取值范围如:5-15,相当于使用逗号运算符键入的5,6,7,8,9,...,13,14,15。分隔符(/):代表'every',/n表示每n个单位间隔例如:小时字段为*/5表示每5小时,也可以写成0-23/5,意思相同。其他领域也类似。5.crontab查看和删除某个用户的所有计划任务crontab-l#默认查看当前用户的所有计划任务#使用-u参数查看指定用户的计划任务,需要执行crontab-uusername-lcrontab-r#删除当前用户crontab中的所有任务,慎用!###删除指定用户名下的定时任务,需要root用户执行,慎用!crontab-r-u用户名6.禁用电子邮件输出默认情况下,命令或脚本(如果有)的输出将发送到您的本地电子邮件帐户。如果想停止接收crontab发送的邮件,需要在执行的命令末尾加上>/dev/null2>&1,例如:03***/root/backup.sh>/dev/null2>&17、使用特殊字符串Linux提供了以下8种特殊字符串,可以用来代替crontab命令的前五个字段,既可以节省时间,又可以提高可读性。特殊字符含义@reboot每次启动时运行一次@yearly每年运行一次,相当于"0011*"@annually(同@yearly)@monthly每月运行一次,相当于"001"@weekly每周运行一次,等于"000"@daily每天运行一次,等于"00*"@midnight(同@daily)@hourly每小时运行一次,等于"0"示例:##Hourly运行ntpdate命令一次@hourly/path/to/ntpdate