热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下的任务计划

背景知识:对于一些即将发生的任务或者在未来一段时间内需要重复执行的任务,在Linux系统下可以通过两个任务管理工具at(在某个时间点执行一次)和crontab(在设定的时间范围内重复执行)来实现。

背景知识:  对于一些即将发生的任务或者在未来一段时间内需要重复执行的任务,在Linux系统下可以通过两个任务管理工具at(在某个时间点执行一次)和crontab(在设定的时间范围内重复执行)来实现。

工具介绍:(1)at  at是仅执行一次任务的指令,依赖于atd服务;默认情况下,在centos中该服务开机自启

在centos6中,可使用命令service atd status查看atd服务的运行状态,此项操作一般在编辑某个at任务前进行

 

出于安全方面的考虑,etc目录下有两个文件,/etc/at.allow与/etc/at.deny,前者为at任务的白名单,后者为at任务的黑名单。默认情况下,只有at.deny文件存在,且内容为空。如果将指定用户名信息写入该文件,则这些用户无权使用at命令设置计划任务。若两个文件同时存在,系统将自动忽略deny文件,以allow文件内的设置值为准,存在于allow文件内的用户才有权限使用at命令;特别地,当两个文件都存在,且allow文件为空时,或者两文件均不存在时,只有root能调用at命令。

at [-mldv] TIME

-m:at任务结束后以邮件方式告知用户

-l:列出当前系统中所有at任务,相当于atq

-d NUM:删除指定号码的at任务,atrm NUM

-v:用较明显的时间格式列出at任务列表

-c NUM:查看指定编号的at任务详细信息

TIME的时间格式:

HH:MM [YYYY-MM-DD]

特别的,TIME部分可设置为:now + 5 minutes

 

如图列所示,执行at命令时,会进入一个shell命令环境,可写入需要执行的命令,注意at的执行于终端环境无关,是放在后台执行的任务(atd接管),终端机不会有任何输出;

at任务的队列位于/var/spool/at目录下,当用户用at命令创建任务后,会在此目录下生成一个临时文件,当at任务执行完毕,此文件被atd服务删除。

     (2)crontab  crontab是可以按照分钟/小时/天/月份/周 等时间间隔循环执行的指令,依赖于crond服务,同样默认为开机自启;除了通过命令crontab -e实现外,也可编辑/etc/crontab来支持。

类似地,同样存在/etc/cron.allow和/etc/cron.deny两个文件,系统对这两个文件的设置相似于at文件;cronie这个主程序包提供了crond守护进程以及辅助工具,cronie有一个补充程序cronie-anacron,用来监控cronie任务的执行状况,由于关机等因素导致的未能正常执行的任务,anacron会随后执行一次;crond服务默认也是开启的,同样的,在centos6中通过以下方式查看:

 

当用户使用crontab命令创建计划任务后,会在/var/spool/cron目录下创建用户名文件,cron任务每执行一次,都会被记录在/var/log/cron中。以下是crontab命令格式(用户级cron任务)

crontab[-u user] [-l | -r | -e] [-i]
-l: 列出所有任务;
-e: 编辑任务;
-r: 移除所有任务;
-i:同-r一同使用,以交互式模式移除指定任务
-u user: 仅root可运行,指定用户管理cron任务

参考/etc/crontab文件,当用户用crontab -e编辑cron任务时,会自动用vim打开一个文本文件,在此文件内进行编辑:

 

 

 

 前五个用‘*’标识的字段含义为“分、时、日、月、周”,实际编辑时只能用数字填充,特别地,在周字段上,0/7均表示周日;后续部分接命令,命令本身需要用绝对路径表示(例:/usr/bin/echo)

如果下达的工作是3:00与6:00执行则为

0 3,6 * * * command

如果下达的工作是8点到12点之间,每小时的20分钟进行一项工作

20 8-12 * * * command

每五分钟进行一项工作

*/5 * * * * command

编辑完保存退出即可。此时/var/spool/cron目录下对应的生成以用户名名命的文件;如果设置了多个cron任务,统一删除用crontab -r 清除所有;crontab -e进入文本编辑后,删除指定的行,保存并退出即可输出某项cron任务!

下面介绍系统级cron任务的处理办法:

**root身份编辑/etc/crontab文件,crond进程会每分钟读一次/etc/crontab以及/var/spool/cron里面的数据,只要完成/etc/crontab文件的编辑,系统级cron任务就开始执行了。

 注意,MAILTO字段可以定义邮件通知的对象,当cron任务执行出错时,会根据此字段定义的邮件地址,由系统发送邮件进行通知;此外,user-name字段需写上用户名,默认系统级任务以root身份运行

看下/etc/cron.d/0hourly文件:

 

观察最后一行,每整点的1分执行run-parts /etc/cron.hourly,run-parts可简单理解为调用脚本并执行之意,后面跟的是可执行脚本的绝对路径,实际效果是每整点的1分后,5分钟内随机选一个时间点执行/etc/cron.hourly下的脚本;

事实上,/etc/cron.daily /etc/cron.monthly /etc/cron.weekly三个目录同样存在,只不过被接下来要说明的anacron任务调用罢了:

anacron程序被crond进程每小时执行一次,anacron再去检测cron任务是否被执行,超期未执行的便执行,无则停止。它按天/周/月侦测未进行的cron任务;

脚本路径:/etc/cron.hourly/0anacron

配置文件路径:/etc/anacrontab

 


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • crontab 自动执行定时任务时,命令无法执行的解决方案
    为什么80%的码农都做不了架构师?最近在工作中需要使用crontab执行定时任务,处理memcacheq消息队列里的数据,但是发现在 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • LINUX学习之centos7营救模式
    今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
author-avatar
俺是胖墩墩_499
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有