文章目录

前言

什么是计划任务?

一次性调度执行at

简介

服务启动

语法

参数:

示例

提交at作业

提交步骤

时间选择格式

示例

查看任务

示例

查看任务执行日志

示例

删除任务

示例

循环调度执行crontab命令

简介

查看服务(是否启动)

创建计划

编辑器中的语法格式

示例

代码中涉及到的任务信息解读

查询计划

删除计划

总结


前言

前面学习了Linux中的软件管理,这篇文章将开始学习Linux中的计划任务,通过本篇文章将学习Linux中的一次性调度执行at命令和循环调度执行cron命令的介绍与使用,下面开始我们的Linux计划任务的学学习吧。


什么是计划任务?

划任务是系统的常见功能,利用任务计划功能,可以将任何脚本、程序或文档安排在某个最方便的时间运行。任务计划在每次系统启动的时候启动并在后台运行。当我们需要在服务器上定时执行一些重复性的事件时使用的,可以通过计划任务程序来运行准备好的脚本、批处理文件夹、程序或命令,在某个特定的时间运行,目前最主要的用途是定期备份数据。。


一次性调度执行at

简介

有些场景我们只是需要执行一次,执行完就结束任务我们使用at命令来操作,任务的执行日志以邮件的形式反馈给电脑。

服务启动

默认情况下所有的linux系统都提供此项功能。在redhat中atd是默认随系统启动而启动。

[root@localhost ~]# ps -ef |grep atd
root       1284      1  0 06:25 ?        00:00:00 /usr/sbin/atd -f
root      12970  12205  0 10:51 pts/0    00:00:00 grep --color=auto atd
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# systemctl status atd.service
● atd.service - Job spooling toolsLoaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: active (running) since 三 2022-11-02 15:48:16 CST; 4 days agoMain PID: 1284 (atd)Tasks: 1CGroup: /system.slice/atd.service└─1284 /usr/sbin/atd -f11月 02 15:48:16 localhost.localdomain systemd[1]: Started Job spooling tools.
11月 07 10:40:00 localhost.localdomain atd[12686]: Starting job 1 (a0000101a82400)...)
11月 07 10:44:00 localhost.localdomain atd[12858]: Starting job 2 (a0000201a82404)...)
Hint: Some lines were ellipsized, use -l to show in full.

语法

at    -参数   <TIMESPEC>

参数:

  • -m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
  • -I atq的别名
  • -d atrm的别名
  • -v 显示任务将被执行的时间
  • -c 打印任务的内容到标准输出
  • -V 显示版本信息
  • -q<列队> 使用指定的列队
  • -f<文件> 从指定文件读入任务而不是从标准输入读入
  • -t<时间参数> 以时间参数的形式提交要运行的任务

示例

[root@localhost ~]# at -v
Garbled time
[root@localhost ~]# at -V
at version 3.1.13

提交at作业

提交步骤

  1. 输入at命令同时指定作业执行的时间 ,按下Enter键;
  2. 在at命令提示符“at >”下,输入命令或者shell脚本
  3. Ctrl+D 提交at作业。

注意:如果如要执行多行命令,输入完一条命令,回车接着输入下一条,直到按Ctrl+D提交任务。

时间选择格式

now  +5min                                                        //现在的时间加5分钟

时间   tomorrow (teatime    is  16:00)          //明天某时间执行

5pm  august  3  2029                                        //2029年八月3日下午5点执行

4:00   2019-11-27                                                //2019年11月27日4点执行

示例

[root@localhost ~]# date
2022年 11月 07日 星期一 11:00:00 CST
[root@localhost ~]# at now +5min
at> ls
at> <EOT>
job 3 at Mon Nov  7 11:05:00 2022[root@localhost ~]# at teatime tomorrow
at> ls /test
at> <EOT>
job 4 at Tue Nov  8 16:00:00 2022
[root@localhost ~]# at 8:00 tomorrow
at> ls /test
at> <EOT>
job 5 at Tue Nov  8 08:00:00 2022
at> useradd sure2023
at> <EOT>
job 6 at Thu Aug  3 17:00:00 2023
[root@localhost ~]# at 5:20 2023-5-20
at> touch /test/love.txt
at> echo "I Love  You">> /test/love.txt
at> <EOT>
job 8 at Sat May 20 05:20:00 2023

查看任务

命令:atq

示例

[root@localhost ~]# date
2022年 11月 07日 星期一 11:08:25 CST
[root@localhost ~]# atq
4   Tue Nov  8 16:00:00 2022 a root
5   Tue Nov  8 08:00:00 2022 a root
6   Thu Aug  3 17:00:00 2023 a root
8   Sat May 20 05:20:00 2023 a root

时间已经过了11:05,所以3号任务已经被执行了,在计划列表内找不到了。

查看任务执行日志

任务执行日志以邮件的形式存在,位置在/var/spool/mail/root。

通过mali查看

示例

[root@localhost ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 3 messages
>   1 root                  Mon Nov  7 10:40  15/514   "Output from your job        "2 root                  Mon Nov  7 10:44  24/601   "Output from your job        "3 root                  Mon Nov  7 11:05  15/516   "Output from your job        "
& 2
Message  2:
From root@localhost.localdomain  Mon Nov  7 10:44:01 2022
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Subject: Output from your job        2
To: root@localhost.localdomain
Date: Mon,  7 Nov 2022 10:44:01 +0800 (CST)
From: root@localhost.localdomain (root)
Status: ROanaconda-ks.cfg
initial-setup-ks.cfg
公共
模板
视频
图片
文档
下载
音乐
桌面& q
Held 3 messages in /var/spool/mail/root

删除任务

命令:atrm  任务号或者atrm文件名

或者使用atrm的别名:at  -d

示例

[root@localhost ~]# atq
4   Tue Nov  8 16:00:00 2022 a root
5   Tue Nov  8 08:00:00 2022 a root
6   Thu Aug  3 17:00:00 2023 a root
8   Sat May 20 05:20:00 2023 a root
[root@localhost ~]# atrm 4
[root@localhost ~]# atq
5   Tue Nov  8 08:00:00 2022 a root
6   Thu Aug  3 17:00:00 2023 a root
8   Sat May 20 05:20:00 2023 a root

4号任务已经被删除 。


循环调度执行crontab命令

简介

cron的概念和crontab是不可分割的;

crontab是一个命令,常见于Unix和Linux的操作系统之中;

用于设置周期性被执行的指令;

该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

计划任务存储位置:/var/spool/cron/

查看服务(是否启动)

[root@localhost ~]# ps -ef |grep cron
root       1288      1  0 06:25 ?        00:00:00 /usr/sbin/crond -n
root      16413  12205  0 11:23 pts/0    00:00:00 grep --color=auto cron
[root@localhost ~]# systemctl status crond.service
● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since 三 2022-11-02 15:48:16 CST; 4 days agoMain PID: 1288 (crond)Tasks: 1CGroup: /system.slice/crond.service└─1288 /usr/sbin/crond -n11月 02 15:48:16 localhost.localdomain systemd[1]: Started Command Scheduler.
11月 02 15:48:16 localhost.localdomain crond[1288]: (CRON) INFO (RANDOM_DELAY will...)
11月 02 15:48:18 localhost.localdomain crond[1288]: (CRON) INFO (running with inot...)
Hint: Some lines were ellipsized, use -l to show in full.

如果服务没启动就用命令systemctl  start  需要启动的服务名   即可,cron程序运行是计划任务执行的根本。

创建计划

命令:crontab  -e      //编辑当前用户的,除了自身用户和root能查到,其他用户查不到。

编辑器中的语法格式

*    *    *     *     * (代表时间)command
分  时  日   月   周
min范围:1---59
hours范围:1---23
day范围:1---31
month范围:1---12
week范围:0---6(Sunday=0)

分 时 日 月 周     命令或脚本程序

留个部分用空格隔开,*表示站位符就算那里没有需要设置的内容也需要有*。

示例

[root@localhost ~]# crontab   -e*/5 * * * *  echo "hello  ">>  /test/hello.txt
0 2 1,4,6 * *  ls /
0 2 5-9 * *  ls /
0 * * * * ls  /
0 2 * * * ls /
0 2 14 * *  ls  /
20  5  20  5 *   echo "i  love  you" >> /test/love.txt
0 2 * * 5   ls  /
0 2 2 6 5   ls   /

代码中涉及到的任务信息解读

*/5 * * * *  echo "hello  ">>  /test/hello.txt              //每五分钟执行一次
0 2 1,4,6 * *  ls /        //每月的1日,4日,6日的2:00执行一次
0 2 5-9 * *  ls /           //每月的5日到9日的2:00执行一次
0 * * * * ls  /                //每小时的第0分钟执行一次
0 2 * * * ls /                //每天的2:00执行一次
0 2 14 * *  ls  /            //每月的14号的2:00执行一次
20  5  20  5 *   echo "i  love  you" >> /test/love.txt        //每年的5月20日的5:20执行一次
0 2 * * 5   ls  /             //每月的周五的2:00执行一次
0 2 2 6 5   ls   /                //每年的6月2日的2:00和每年6月周五的2:00都执行一次

查询计划

命令:crontab  -l

管理员可以使用  -u  username,去管理其他用户的计划任务

查看计划执行日志命令:mail

[root@localhost ~]# crontab -l
*/5 * * * *  echo "hello  ">>  /test/hello.txt
0 2 1,4,6 * *  ls /
0 2 5-9 * *  ls /
0 * * * * ls  /
0 2 * * * ls /
0 2 14 * *  ls  /
20  5  20  5 *   echo "i  love  you" >> /test/love.txt
0 2 * * 5   ls  /
0 2 2 6 5   ls   /
您在 /var/spool/mail/root 中有邮件

每五分钟就会自动将hello写入到hello.txt中,说明任务计划设置成功,一般我们在生产环境中会用循环执行任务的操作用作备份。

删除计划

命令:crontab   -r       删除当前用户的计划。

[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root

总结

在备份数据的时候我们通常使用crontab命令,当只需要在指定时间仅需要执行一次就结束的时候我们使用at命令完成,本篇文章我们了解了Linux中的任务计划管理,学会使用at和crontab命令以及他们的应用场景。


创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉我,一起学习。

Linux计划任务at和cron命令的使用相关推荐

  1. linux设备负责执行计划任务,Linux计划任务详解,很详细,每一行命令都有相对应的白话解释。...

    计划任务 计划任务的作用是:做一些周期性的任务,目前最主要的用途是定期备份数据. 计划任务主要分为一次性调度执行at和循环调度执行cron,下面我就围绕着at和cron来讲解. 一次性调度执行at a ...

  2. Linux查看分析任务计划命令,详述Linux计划任务的 at和crontab的命令 以及如何查看crontab日志...

    一:1.计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思.在Linux中,我们经常用到cron服务器来完成这项工作.cron服务器可以根据配置文件约定的时间来执行特定的作务.比如我们可 ...

  3. linux 自定义目录,linux – cron命令的自定义目录

    我在Debian / Ubuntu上使用vixie cron.如何设置cron要读取的自定义目录?我想引导crontab运行在一系列文件中找到的命令,例如 /home/cron/*.cron 或完美 ...

  4. linux的周期计划任务叫atd,linux计划任务

    一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...

  5. linux 必须掌握的60个命令

    Linux必学的60个命令 http://blog.csdn.net/ustc_dylan/article/details/4152501 Linux提供了大量的命令,利用它可以有效地完成大量的工 作 ...

  6. linux计划任务执行bin文件,Linux任务计划和周期性任务执行

    linux计划任务有两类 at:未来某个时间点仅执行一次任务就结束的指令,at指令执行时必须要有atd这个服务支持. crontab:可以以时间单位为分钟,小时,每天,每周,每月,每年等循环执行某任务 ...

  7. Linux计划任务(at,crontab)

    在LINUX中,我们通过crontab和at这两个东西来实现 at:它是一个可以处理仅执行一次就结束的指令 crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去 ...

  8. linux 计划任务格式,linux crontab 定时任务格式和使用方法2019-01-13

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  9. linux的任务计划6,Linux计划任务

    Linux计划任务: 未来的某个时间执行一次任务,或者周期性执行某个任务,执行结果会通过邮件通知 定时任务:at batch 周期性任务:crontab 系统任务调度:/ect/crontab 用户任 ...

最新文章

  1. 一个类可以实现多个接口但是只能实现一个类
  2. 秒杀应用的MySQL数据库优化
  3. 吴恩达 coursera ML 第十课总结+作业答案
  4. python中mainloop什么意思_很难理解python中的Tkinter mainloop()
  5. 51nod 1091 重叠的线段(贪心)
  6. flex布局实现叠在另一个div之上_CSS3 flex弹性伸缩布局[上]
  7. 手机网站前端开发经验总结
  8. 评分 - 2019寒假训练营第一次作业
  9. 前中后序遍历的相互转化(附代码)
  10. HomeBrew加速
  11. android webview播放视频黑屏
  12. asp.net1053-酒店宾馆客房预订管理系统#毕业设计
  13. maxscript rollout
  14. 海量数据分布式存储技术-作业五
  15. 用C语言中的结构体实现简单的学生成绩管理系统
  16. predict函数在回归分析中的应用
  17. Android 解压 Zip 压缩文件
  18. notepad++ 插件推荐
  19. git配置中的CRLF、LF、CR
  20. 软件开发人员如何与测试人员相处

热门文章

  1. excel表格导出之后身份证号列变成了科学计数法
  2. C#毕业设计——基于C#+asp.net+sqlserver的客户关系管理系统设计与实现(毕业论文+程序源码)——客户关系管理系统
  3. Unity实时运动残影特效
  4. 计算机创新项目点子,【2018年最新整理】单片机营销项目金点子创新创业策划书.doc...
  5. 跟着吴坚鸿学单片机——第2天:delay()延时实现LED灯的闪烁
  6. html5手机视频直播
  7. 计算机维修知识论文,计算机维修论文2000字
  8. php tip,jQuery tip提示插件详解
  9. ajdt插件安装后无效_使用Eclipse和AJDT开发面向方面的Java应用程序
  10. 草根方式学习java中的多线程