ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux 计划任务

2021-11-11 12:02:04  阅读:141  来源: 互联网

标签:node 01 21 命令 任务 计划 Linux root


Linux 计划任务


计划任务类型

计划任务包括两种类型:

  • 周期性计划任务(crontab 命令) :每到指定时间点就执行指定的任务,周期性重复执行
  • 一次性计划任务 (at 命令):未来某个时间执行一次指定任务

crontab 定时器

定时器

crontab 命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个 crontab 文件来保存调度信息。可以使用它运行任意一个 shell 脚本或某个命令。

crontab 命令格式

作用:用于生成 cron 进程所需要的 crontab 文件

  • -e 编辑定时任务
  • -l 查看定时任务
  • -r 删除定时任务
  • -i 删除定时任务给予提示
# crontab -e                                                                         
* * * * * /root/shell/if.sh                                                          

crontab 文件格式

minute hour day-of-month month-of-year day-of-week commands
:----: :--: :----------: :-----------: :---------: :--------:
分钟 小时 天 月 周 命令或脚本

  • minute 一小时中的哪一分钟 [0~59]
  • hour 一天中的哪个小时 [0~23]
  • day-of-month 一月中的哪一天 [1~31]
  • month-of-year 一年中的哪一月 [1~12]
  • day-of-week 一周中的哪一天 [0~6] 0表示星期天
  • commands 执行的命令或脚本

书写注意事项

  1. 全都不能为空,必须填入,不知道的值使用通配符 * 表示任何时间
  2. 每个时间字段都可以指定多个值,不连续的值用逗号,间隔,连续的值用间隔符-间隔
  3. 命令应该给出绝对路径
  4. 用户必须具有运行所对应的命令或程序的权限

注:whereis 命令:可以查看命令所在的文件路径

at 定时任务

安装 at 命令

at 定时任务是指定一个时间执行一个任务,只能执行一次,需要安装 at 命令;

[root@node-01 ~]# yum -y install at                                                  
at 命令格式
at [option] TIME                                                                     
                                                                                                                                                                                                                                                            
启动 at 服务
[root@node-01 ~]# systemctl start atd                                                
[root@node-01 ~]# systemctl enable atd                                               
at 创建任务

使用 at 命令创建的所有任务,都会以文件的格式保存在 /var/spool/at/ 目录下面

  • 方式一:通过 CLI 来配置计划任务
  1. 直接使用 at 命令指定好时间后,会进入一个 CLI 界面,手动输入指定时间要执行的操作(可以一直回车指定多项操作),最后使用 Ctrl+D 提交并退出
[root@node-01 ~]# at 21:25                                                           
at> echo "hello,world"                                                               
at> <EOT>                                                                            
job 1 at Tue Mar  9 21:25:00 2021                                                    
  1. 使用at -l或者atq命令查看刚才创建的任务
[root@node-01 ~]# at -l                                                              
2       Tue Mar  9 21:27:00 2021 a root                                              
[root@node-01 ~]# atq                                                                
2       Tue Mar  9 21:27:00 2021 a root                                              
  1. 查看任务执行结果

at 计划任务的执行结果都会邮件通知对应的用户,所以直接查看 /var/spool/mail/ 目录下对应用户文件的邮件内容或者使用 mail 命令指定编号查看

[root@node-01]# cat /var/spool/mail/root                                             
From root@node-01.localdomain  Tue Mar  9 21:25:01 2021                              
Return-Path: <root@node-01.localdomain>                                              
X-Original-To: root                                                                  
Delivered-To: root@node-01.localdomain                                               
Received: by node-01.localdomain (Postfix, from userid 0)                            
id EC49F200F3D3; Tue,  9 Mar 2021 21:25:00 +0800 (CST)                               
Subject: Output from your job        1                                               
To: root@node-01.localdomain                                                         
Message-Id: <20210309132500.EC49F200F3D3@node-01.localdomain>                        
Date: Tue,  9 Mar 2021 21:25:00 +0800 (CST)                                          
From: root@node-01.localdomain (root)                                                
                                                                                     
hello,world # 定时任务执行结果                                                               
  • 方式二:通过读取文件中任务列表来创建计划任务
  1. 使用at -f命令从指定文件中读取内容创建任务
[root@node-01 ~]# echo "您好呀" >> at.txt                                               
[root@node-01 ~]# at -f at.txt 21:38                                                 
job 3 at Tue Mar  9 21:38:00 2021                                                    
  1. 使用at -d命令删除指定编号任务
[root@node-01 spool]# atq                                                            
3       Tue Mar  9 21:38:00 2021 a root                                              
[root@node-01 spool]# at -d 3                                                        
[root@node-01 spool]# atq                                                            
  • 方式三:通过 echo 显示出要执行的内容来创建计划任务
[root@node-01 spool]# echo "hello,wolrd"  at 21:40                                  
job 4 at Tue Mar  9 21:40:00 2021                                                    
at 常用时间格式
  1. 指定具体年月日时间来执行
[root@node-01 ~]# at -f test.txt 20:20 2018-09-05                                    
  1. 指定 10 分钟之后执行
[root@node-01 ~]# at -f test.txt now+10minutes                                       
  1. 指定 1 小时之后执行
[root@node-01 ~]# at -f test.txt now+1hours                                          
  1. 指定 10 天之后执行
[root@node-01 ~]# at -f test.txt now+10day                                           

标签:node,01,21,命令,任务,计划,Linux,root
来源: https://www.cnblogs.com/zkatr/p/15539155.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有