crontab计划任务

xiaoxiao2025-06-06  84

1.at命令

      at 命令是用来执行一次性任务,比如要在二十分钟后重启,要在 2 分钟后启动一个可执行程序,或者在一天后执行一个脚本。适合应对突发性和临时性的任务。 查看服务是否运行:

systemctl status atd

at命令:

at [options] [TIME] options: -V:查看当前版本号 -m:当任务完成时给用户发送邮件 -M:当任务完成时不发送邮件 -f:从文件中读取任务 -l:列出所有任务,Is an alias for atq,同atq命令。 -d num:删除num号定时任务,Is an alias for atrm,同atrm命令 -c num:查看num号定时任务 TIME:设定定时任务时间 HH:MM 如: at 02:30 HH:MM YYYY-MM-DD 如:at 8:00 2020-01-01 now + 时间:比如在十分钟后:at now + 10 min,在一天后:at now + 1 day 特殊时间:midnight, noon, or teatime

实例演示: 1.添加定时任务

~]# at 10:00 > ls /tmp > <EOT> #ctrl+d结束 ~]# at now+10min > ls /tmp ~# at now+10 -f /tmp/file ~]# cat /tmp/file echo "hello world."

2.查看定时任务

~]# at -l 1 Thu Oct 25 11:00:00 2018 a root 2 Thu Oct 25 10:58:00 2018 a root 3 Thu Oct 25 10:58:00 2018 a root ~]# atq 1 Thu Oct 25 11:00:00 2018 a root 2 Thu Oct 25 10:58:00 2018 a root 3 Thu Oct 25 10:58:00 2018 a root

3.查看定时任务内容

~]# at -c 1 ... ls /tmp

4.删除计划任务

~]# at -d 1 ~]# at -l 2 Thu Oct 25 10:58:00 2018 a root 3 Thu Oct 25 10:58:00 2018 a root

总结:       at 是一个一次性定时的命令,守护进程 atd 为它提供服务。如果需要周期性定时任务,需要使用 crontab 命令。

2.crontab命令

      crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。

查看crond是否启动:

systemctl status crond #centos7 service crond status #centos6

cron任务分为两类:

系统cron任务:主要用于实现系统自身的维护 手动编辑:/etc/crontab 文件 用户cron任务: crontab命令

系统cron任务配置:/etc/crontab

~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed

用户cron任务:/var/spool/cron/USERNAME       /var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

crontab命令:

crontab [-u user] [options] -e:创建定时任务 -l:列出所有任务 -r:移除所有任务,即删除/var/spool/cron/USERNAME -i:在使用-r选项移除所有任务时提醒用户确认 -u user:root用户可为指定用户管理cron任务。

文件格式:

minute: 表示分钟,可以是从0到59之间的任何整数。 hour :表示小时,可以是从0到23之间的任何整数。 day :表示日期,可以是从1到31之间的任何整数。 month :表示月份,可以是从1到12之间的任何整数。 week :表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command :要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 在以上各个字段中,还可以使用以下特殊字符: 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

注: 1.运行结果以邮件通知当前用户,如果拒绝接受邮件       (1) COMMAND >/dev/null       (2) COMMAND &> /dev/null 2.某任务在指定的时间因关机未能执行,下次开机将不会执行该任务,如果期望某时间因故未能按时执行,下次开机后无论是否到来相应时间点do偶要执行一次,可使用anacron实现。

实例演示:

1.在每周一、二、三的凌晨3点25分,都需要使用tar命令把某个数据目录进行打包处理,使其作为一个备份文件。 25 3 * * 1,2,3 /usr/bin/tar -xzvf backup.tar.gz /work 25 3 * * 1-3 /usr/bin/tar -xzvf backup.tar.gz /work 2.每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令] */15 * * * * /usr/bin/ls

注:分的设置不要为*,执行命令路径要用绝对路径。

转载请注明原文地址: https://www.6miu.com/read-5031371.html

最新回复(0)