爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      【Linux】定时任务crontab和at命令详解

      首页 知识中心 其他 文章详情页

      【Linux】定时任务crontab和at命令详解

      2023-05-18 09:33:35 阅读次数:510

      crontab,Linux

      【Linux】定时任务crontab和at命令详解    

      linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。

      一、crond简介

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

      Linux下的任务调度分为两类,系统任务调度和用户任务调度。

      系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

      /etc/crontab文件包括下面几行:

      cat /etc/crontab

      SHELL=/bin/bash

      PATH=/sbin:/bin:/usr/sbin:/usr/bin

      MAILTO=HOME=/

      # 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


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

      用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

      使用者权限文件:

      文件:

      /etc/cron.deny

      说明:

      该文件中所列用户不允许使用crontab命令

      文件:

      /etc/cron.allow

      说明:

      该文件中所列用户允许使用crontab命令

      文件:

      /var/spool/cron/

      说明:

      所有用户crontab文件存放的目录,以用户名命名

      crontab文件的含义:

      用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

      minute hour day month week command

      其中:

      minute: 表示分钟,可以是从0到59之间的任何整数。

      hour:表示小时,可以是从0到23之间的任何整数。

      day:表示日期,可以是从1到31之间的任何整数。

      month:表示月份,可以是从1到12之间的任何整数。

      week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

      command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

      【Linux】定时任务crontab和at命令详解

      在以上各个字段中,还可以使用以下特殊字符:

      星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

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

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

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

      二、crond服务

      安装crontab:

      yum install crontabs

      服务操作说明:

      /sbin/service crond start //启动服务

      /sbin/service crond stop //关闭服务

      /sbin/service crond restart //重启服务

      /sbin/service crond reload //重新载入配置

      /sbin/service crond status //启动服务


      查看crontab服务是否已设置为开机启动,执行命令:

      ntsysv

      加入开机自动启动:

      chkconfig –level 35 crond on

      三、crontab命令详解

      1.命令格式:

      crontab [-u user] file

      crontab [-u user] [ -e | -l | -r ]

      2.命令功能:

      通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

      3.命令参数:

      -u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

      file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

      -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

      -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

      -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

      -i:在删除用户的crontab文件时给确认提示。

      4.常用方法:

      1). 创建一个新的crontab文件

      在 考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑 crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$ HOME目录下的. profile文件,在其 中加入这样一行:

      EDITOR=vi; export EDITOR

      然后保存并退出。不妨创建一个名为 cron的文件,其中是用户名,例如, davecron。在该文件中加入如下的内容。

      # (put your own initials here)echo the date to the console every

      # 15minutes between 6pm and 6am

      0,15,30,45 18-06 * * * /bin/echo ‘date’ > /dev/console

      保存并退出。确信前面5个域用空格分隔。

      在 上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些 系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为 cron命令的参数:

      $ crontab davecron

      现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。

      同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

      2). 列出crontab文件

      为了列出crontab文件,可以用:

      $ crontab -l

      0,15,30,45,18-06 * * * /bin/echo `date` > dev/tty1

      你将会看到和上面类似的内容。可以使用这种方法在$ H O M E目录中对crontab文件做一备份:

      $ crontab -l > $HOME/mycron

      这样,一旦不小心误删了crontab文件,可以用上一节所讲述的方法迅速恢复。

      3). 编辑crontab文件

      如果希望添加、删除或编辑crontab文件中的条目,而E D I TO R环境变量又设置为v i,那么就可以用v i来编辑crontab文件,相应的命令为:

      $ crontab -e

      可以像使用v i编辑其他任何文件那样修改crontab文件并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时, c r o n会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。

      我们在编辑crontab文件时,没准会加入新的条目。例如,加入下面的一条:

      # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month

      30 3 1,7,14,21,26 * * /bin/find -name “core’ -exec rm {} \;

      现在保存并退出。最好在crontab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。

      现在让我们使用前面讲过的crontab -l命令列出它的全部信息:

      $ crontab -l

      # (crondave installed on Tue May 4 13:07:43 1999)

      # DT:ech the date to the console every 30 minites

      0,15,30,45 18-06 * * * /bin/echo `date` > /dev/tty1

      # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month

      30 3 1,7,14,21,26 * * /bin/find -name “core’ -exec rm {} \;

      4). 删除crontab文件

      要删除crontab文件,可以用:

      $ crontab -r

      5). 恢复丢失的crontab文件

      如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/,其中是用户名。如果由于权限问题无法完成拷贝,可以用:

      $ crontab

      其中,是你在$ H O M E目录中副本的文件名。

      我建议你在自己的$ H O M E目录中保存一个该文件的副本。我就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。

      有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按,否则你将丢失crontab文件。

      5.使用实例

      实例1:每1分钟执行一次command
      命令:
      * * * * * command

      实例2:每小时的第3和第15分钟执行
      命令:
      3,15 * * * * command

      实例3:在上午8点到11点的第3和第15分钟执行
      命令:
      3,15 8-11 * * * command

      实例4:每隔两天的上午8点到11点的第3和第15分钟执行
      命令:
      3,15 8-11 */2 * * command

      实例5:每个星期一的上午8点到11点的第3和第15分钟执行
      命令:
      3,15 8-11 * * 1 command

      实例6:每晚的21:30重启smb 
      命令:
      30 21 * * * /etc/init.d/smb restart


      实例7:每月1、10、22日的4 : 45重启smb 
      命令:
      45 4 1,10,22 * * /etc/init.d/smb restart


      实例8:每周六、周日的1 : 10重启smb
      命令:
      10 1 * * 6,0 /etc/init.d/smb restart


      实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 
      命令:
      0,30 18-23 * * * /etc/init.d/smb restart


      实例10:每星期六的晚上11 : 00 pm重启smb 
      命令:
      0 23 * * 6 /etc/init.d/smb restart


      实例11:每一小时重启smb 
      命令:
      * */1 * * * /etc/init.d/smb restart


      实例12:晚上11点到早上7点之间,每隔一小时重启smb 
      命令:
      * 23-7/1 * * * /etc/init.d/smb restart

      实例13:每月的4号与每周一到周三的11点重启smb 
      命令:
      0 11 4 * mon-wed /etc/init.d/smb restart

      实例14:一月一号的4点重启smb 
      命令:
      0 4 1 jan * /etc/init.d/smb restart


      实例15:每小时执行/etc/cron.hourly目录内的脚本
      命令:
      01 * * * * root run-parts /etc/cron.hourly
      说明:
      run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了


      四、使用注意事项

      注意环境变量问题
      有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

      在 crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程 序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这 样,系统执行任务调度时就没有问题了。

      不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

      1)脚本中涉及文件路径时写全局路径;

      2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

      cat start_cbp.sh

      #!/bin/sh

      source /etc/profile

      export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

      /usr/local/jboss-4.0.5/bin/run.sh -c mev &

      3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:

      0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

      注意清理系统用户的邮件日志
      每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。

      例如,可以在crontab文件中设置如下形式,忽略日志输出:

      0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

      “/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

      系统级任务调度与用户级任务调度
      系 统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么 做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc /crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个 定时重启系统的任务也是无效的。

      其他注意事项
      新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。

      当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

      千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

      在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。



         crontab工具报错crontab:you are not authorized to use cron.Sorry.   

      1、oracle用户下执行   crontab -l    报错:  

      $ crontab -l  

      crontab:you are not authorized to use cron. Sorry.  

      2、解决方法:  

      --到root用户下,修改文件cron.allow,添加oracle  

      # cd /var/adm/cron  

      # vi cron.allow  

      root  

      adm  

      uucp  

      oracle  

      3、先执行crontab -e添加定时任务,才能crontab -l查看:  

      $ crontab -l  

      crontab: can't open your crontab file.  



      有时在执行crontab的时候会报无权限使用:

      [oracle@dlhr ~]$ crontab -e

      /var/spool/cron/oracle: Permission denied

      出现如上错误,查看crontab的权限:

      [root@dlhr u01]# ll /usr/bin/crontab

      -rwxr-xrwx. 1 root root 47520 Mar  4  2013 /usr/bin/crontab

      因为crontab要使用到除了crontab之外的其它文件,而那些文件普通用户是没有更改权限的,那么现在就需要增加对文件系统的特权,让它可以对其它文件也有更改权限,更改权限方式如下:

      [root@dlhr u01]# chmod u+s /usr/bin/crontab

      更改后的权限:

      [root@dlhr u01]# ll /usr/bin/crontab

      -rwsr-xr-x. 1 root root 47520 Mar  4  2013 /usr/bin/crontab

      crontab的运行日志文件为:/var/log/cron。若crontab没有运行,则可以查询该日志文件进行诊断。



      Linux下的crontab定时执行任务命令详解

      在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
      cron的配置文件称为“crontab”,是“cron table”的简写。

      一、cron服务
        cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
        service crond start    //启动服务
        service crond stop     //关闭服务
        service crond restart  //重启服务
        service crond reload   //重新载入配置
        service crond status   //查看服务状态 

      二、cron在3个地方查找配置文件:
      1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

      三、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

      SHELL=/bin/bash
      PATH=/sbin:/bin:/usr/sbin:/usr/bin
      MAILTO=root
      HOME=/

      # 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

      【Linux】定时任务crontab和at命令详解

      • MAILTO=root:是说,当 /etc/crontab 这个档案中的例行性命令发生错误时,会将错误讯息或者是屏幕显示的讯息传给谁?由于 root 并无法再用户端收信,因此,我通常都將这个 e-mail 改成自己的账号,好让我随时了解系统的状态!
      • 01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root ,这一行代表的是『执行的级别为root身份』当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是『一个目录内(/etc/cron.hourly)的所有可执行文件』,也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可,还不需要使用到crontab -e的程式!


      四、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

      五、权限(?)
      crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
      用法如下: 
      1、如果两个文件都不存在,则只有root用户才能使用crontab命令。 
      2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。 
      3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。 
      4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。 

      AIX 中 普通用户默认都有 crontab 权限,如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/cron.deny 
      HP-UNIX 中默认普通用户没得crontab 权限 ,要想放开普通用户的crontab 权限可以编

      六、创建cron脚本
      第一步:写cron脚本文件,命名为crontest.cron。
      15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt  表示,每隔15分钟,执行打印一次命令 
      第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定 
      第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本


      注意:这操作是直接替换该用户下的crontab,而不是新增

       

      七、crontab用法 
        crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。
          每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

         在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
          每个域之间使用空格或者制表符分隔。格式如下: 
        minute hour day-of-month month-of-year day-of-week commands 
          合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 
          除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

          -l 在标准输出上显示当前的crontab。 
        -r 删除当前的crontab文件。 
        -e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。 

       

      八、例子: 
      每天早上6点 
      0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

      每两个小时 
      0 */2 * * * echo "Have a break now." >> /tmp/test.txt  

      晚上11点到早上8点之间每两个小时和早上八点 
      0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

      每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
      0 11 4 * 1-3 command line

      1月1日早上4点 
      0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ 

      每小时执行/etc/cron.hourly内的脚本
      01 * * * * root run-parts /etc/cron.hourly
      每天执行/etc/cron.daily内的脚本
      02 4 * * * root run-parts /etc/cron.daily 

      每星期执行/etc/cron.weekly内的脚本
      22 4 * * 0 root run-parts /etc/cron.weekly 

      每月去执行/etc/cron.monthly内的脚本 
      42 4 1 * * root run-parts /etc/cron.monthly 

      注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。   

      每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 
      5,15,25,35,45,55 16,17,18 * * * command

      每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
      00 15 * * 1,3,5 shutdown -r +5

      每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 
      10,40 * * * * innd/bbslink 

      每小时的1分执行用户目录下的bin/account这个指令: 
      1 * * * * bin/account

      每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔): 
      20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  

      每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。 
      12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt 



       

      Linux下的at定时执行任务命令详解

      之前说了使用crontab实现定时执行任务,假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。
      一、at服务

        cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
        service atd start    //启动服务
        service atd  stop     //关闭服务
        service atd restart  //重启服务
        service atd reload   //重新载入配置
        service atd status   //查看服务状态 

      二、at在配置文件:

      at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

      三、参数详解

      at [-V] [-q x] [-f file] [-mldbv] time
      at -c job ...
      atq [-V] [-q x]
      atrm [-V] job ...

       

      -V : 印出版本编号 

      -q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个 

      -m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者 

      -f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用


      -l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l) 
      -d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d) 
      -v : 列出所有已经完成但尚未删除的指定 

         at命令执行流程
        # at 2:05 tomorrow
        at>/home/kyle/do_job
        at> Ctrl+D
        AT Time中的时间表示方法
        -----------------------------------------------------------------------
        时 间 例子 说明
        -----------------------------------------------------------------------
        Minute    at now + 5 minutes   任务在5分钟后运行
        Hour      at now + 1 hour      任务在1小时后运行
        Days      at now + 3 days      任务在3天后运行
        Weeks     at now + 2 weeks     任务在两周后运行
        Fixed     at midnight          任务在午夜运行
        Fixed     at 10:30pm           任务在晚上10点30分

        Fixed     at 23:59 12/31/2018   任务在2018年12月31号23点59分  

      【Linux】定时任务crontab和at命令详解

      [root@localhost ~]# at 5pm +3 days
      at> /bin/date 
      at> 
      job 1 at 2016-08-30 17:00
      [root@localhost ~]# atq
      1    2016-08-30 17:00 a root
      [root@localhost ~]# at 2:05 tomorrow
      at> echo the end of world !
      at> 
      job 2 at 2016-08-28 02:05
      [root@localhost ~]# atq
      2    2016-08-28 02:05 a root
      1    2016-08-30 17:00 a root
      [root@localhost ~]# atrm 2
      [root@localhost ~]# atq
      1    2016-08-30 17:00 a root
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/lhrbest/2700110,作者:小麦苗DB宝,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:【Linux】Coredump调试

      下一篇:linux 命令-文本比较comm、diff、patch

      相关文章

      2025-05-14 10:33:25

      超级好用的C++实用库之网络

      在网络相关的项目中,我们经常需要去获取和设置设备的IP地址、子网掩码、网关地址、MAC地址等信息。这些信息一般与操作系统相关,在Windows系统和Linux系统上调用的接口是不一样的。

      2025-05-14 10:33:25
      Linux , 参数 , 地址 , 接口 , 网卡 , 返回值
      2025-05-14 10:03:13

      超级好用的C++实用库之线程基类

      在C++中,线程是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源,比如:内存空间和系统资源,但它们有自己的指令指针、堆栈和局部变量等。

      2025-05-14 10:03:13
      Linux , void , Windows , 函数 , 操作系统 , 线程
      2025-05-13 09:51:17

      使用Kernel 2.6版本的Linux系统运行dbca创建数据库实例时报错ORA-27125

      使用Kernel 2.6版本的Linux系统运行dbca创建数据库实例时报错ORA-27125

      2025-05-13 09:51:17
      dbca , Linux , ORA
      2025-05-12 08:40:18

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell变量】

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell变量】

      2025-05-12 08:40:18
      Linux , 变量
      2025-05-09 08:51:09

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell基本运算符】

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell基本运算符】

      2025-05-09 08:51:09
      Linux , Shell , 语法 , 运算符
      2025-05-09 08:51:09

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】

      Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】

      2025-05-09 08:51:09
      Linux , Shell , var
      2025-05-07 09:09:26

      【Linux 从基础到进阶】Linux中的用户认证与授权

      在Linux系统中,**用户认证(authentication)和授权(authorization)**是两个核心的安全机制,用来控制系统资源的访问和管理用户操作权限。用户认证确保登录的用户是合法的,授权则决定用户能够执行哪些操作。

      2025-05-07 09:09:26
      Linux , 密码 , 用户 , 认证
      2025-05-07 09:08:54

      【Linux】什么是Linux?

      【Linux】什么是Linux?

      2025-05-07 09:08:54
      Linux , 文件 , 权限
      2025-05-07 09:08:42

      Linux系统中Crontab的用法详解

      在Linux系统中,任务调度是管理系统定期执行任务的重要方式,而crontab则是实现这一功能的强大工具。

      2025-05-07 09:08:42
      crontab , Linux , 任务
      2025-05-06 09:19:21

      【Linux 从基础到进阶】使用 Crontab 进行任务调度

      Crontab 是 Linux 和 Unix 系统中用于定时执行任务的一个重要工具,适用于自动化脚本执行、系统维护、备份等定时任务。通过 Crontab,可以让系统在指定的时间自动执行设定的命令或脚本,大大提高了系统管理和运维的效率。

      2025-05-06 09:19:21
      CentOS , Linux , 任务 , 任务调度
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5240852

      查看更多

      最新文章

      【Linux 从基础到进阶】Linux中的用户认证与授权

      2025-05-07 09:09:26

      【Linux】什么是Linux?

      2025-05-07 09:08:54

      【Linux 从基础到进阶】使用 Crontab 进行任务调度

      2025-05-06 09:19:21

      【Linux】密码策略、连接空闲超时时间设置

      2025-04-23 08:18:21

      在 Linux 上监听 Redis:从基础到进阶的实现与扩展

      2025-03-26 09:31:12

      Linux自动化任务管理以及常见定时命令示例

      2025-02-28 09:27:53

      查看更多

      热门文章

      Linux crontab 任务误删恢复及备份步骤

      2023-03-20 08:19:07

      Linux环境MySql忘记密码

      2023-02-20 10:34:59

      linux 查看crontab任务执行情况

      2023-04-13 09:54:33

      Linux命令之find的用法

      2022-11-16 11:57:57

      Linux学习之定时任务调度cron/crontab

      2023-05-09 06:16:56

      Linux搭建ES

      2024-09-25 10:14:21

      查看更多

      热门标签

      linux java python javascript 数组 前端 docker Linux vue 函数 shell git 节点 容器 示例
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Linux:Gitlab:16.9.2 创建用户及项目仓库基础操作(2)

      Linux ssh 远程连接服务

      Linux关机命令详解:安全关机与重启

      Linux Commnad iptables 防火墙

      kali Linux :开启ssh (远程连接)

      Linux之压缩和解压类指令

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号