linux计划任务

本文详细介绍了Linux下的两种任务调度工具——at和cron。at命令用于创建一次性任务,允许用户指定精确的执行时间,而cron是周期性计划任务的守护进程,按照预设的时间周期执行命令。文章涵盖了at命令的使用方法,如时间设置和任务管理,以及cron的配置文件、run-parts和crontab的使用。此外,还提到了权限管理,包括黑名单和白名单的设置,以控制用户对计划任务的访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  1. at命令

at命令允许指定Linux系统何时运行脚本,at命令会将作业提交到队列中,指定shell在何时运行该作业。
at的守护进程at 会以后台模式运行,检查作业队列来运行作业。
atd守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业。
默认情况下,atd守护进程每60秒检查一次目录。有作业时,会检查作业运行时间,如果时间与当前时间匹配,
则运行此作业

  1. 周期性命令

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,
当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,
crond进程每分钟会定期检查是否有要执行的任 务,如果有要执行的任务,则自动执行该任务。

一、at 临时性任务

选项描述
at创建一次性任务;若在任务内创建系统已存在的文件,会更改文件的创建时间为当前
ctrl+d结束at命令的输入
atq查询一次性任务:查询没有完成的任务,完成时间之前
atrm id号删除一次性的任务
:/var/spool/at/计划任务的存储目录
/var/spool/mail到执行任务时间时,不会显示在前台进行,系统会发送一个邮件mail,进入存储目录查询
  1. 时间设置

at允许使用一套相当复杂的指定时间的方法

项目Value
at now +3min3分钟之后执行创建的任务
at teatime默认代表当天下午四点执行任务
at teatime +4day代表四天后的下午四点执行任务
at noonColumn 2 默认代表当天中午12点
:at May 30 20212021年5月30日执行任务
at 5pm下午三点执行任务

at [ HH:MM] [yyyy-mm-dd] //创建一次性任务;若在任务内创建系统已存在的文件,会更改文件的创建时间为当前

ctrl+d   //结束at命令的输入
atq:查询一次性任务:查询没有完成的任务,完成时间之前
atrm id号:删除一次性的任务
/var/spool/at/:计划任务的存储目录
/var/spool/mail:到执行任务时间时,不会显示在前台进行,系统会发送一个邮件mail,进入存储目录查询 

在这里插入图片描述

at now +2min:2分钟之后执行创建的任务
at teatime:默认代表当天下午四点执行任务
at teatime +3day:代表三天后的下午四点执行任务
at noon:默认代表当天中午12点
at May 30 2021:2021530日执行任务
at 3pm:下午三点执行任务 

二 周期性计划任务-

3.1 命令简介
  1. 按照预先设置的时间周期重复执行用户指定的命令操作;执行此命令需要运行守护进程:crond,但是现在系统一般都是自动运行的。
  2. 主要配置文件
    全局配置文件:/etc/crontab
    系统默认的设置:/rtc/cron.*/
    用户定义的设置:/var/spool/cron/用户

三 周期性计划任务-crontab

3.1 主要配置文件

主要配置文件全局配置文件:/etc/crontab
系统默认的设置:/rtc/cron.*/
用户定义的设置:/var/spool/cron/用户
/etc/crontab文件包括下面几行:

cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=HOME=/
3.2 run-parts
**51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
3.3命令选项crontab

前 四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行 命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。

编辑周期性任务

编辑周期性任务命令语法
-e编辑周期性任务;打开vi编辑器,最好加上绝对路径
-el查看周期性任务
-r删除当前用户所有的任务

超级用户root可以通过命令管理其他用户
在这里插入图片描述

星号(*):代表所有可能的值.
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

3.4 .黑白名单
  1. 计划任务crontab权限设置
    crontab默认所有用户都可以执行crontab设置计划任务。若有需要可以通过在/etc/cron.deny中添加用户来禁止该用户设置计划任务,也可以自行创建/etc/cron.allow来使用白名单

  2. 黑名单cron.deny目录:/etc | grep “cron.deny”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值