热门标签 | 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

 


推荐阅读
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 本文介绍了 Linux 系统中用于定期执行任务的 cron 服务及其配置方法。通过 crond 和 crontab 命令,用户可以轻松地安排系统和用户级别的周期性任务。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Linux Shell变量初探:初始值解析与使用指南
    本文探讨了Linux Shell中变量的基本概念及其在BASH中的应用。变量是用于存储可变数据的标识符,能够代表不同的值。文章详细介绍了BASH shell的主要优势,包括强大的命令编辑能力、自动补全功能、命令别名设置、作业控制以及前后台任务管理。此外,还涵盖了编程脚本编写和通配符的使用方法,为初学者提供了全面的指导。 ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
    在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 【Linux】CentOS 7 远程连接指南:高效安全的远程管理方法
    在 CentOS 7 中实现高效且安全的远程管理,本文详细介绍了如何检查和安装配置 OpenSSH。首先,通过 `yum list installed` 命令检查系统是否已安装 OpenSSH,若未安装,则使用 `yum install openssh-server` 进行安装。随后,配置 SSH 服务以确保其安全性和稳定性,包括修改默认端口、禁用 root 登录等关键步骤。此外,还提供了常见问题的解决方案,帮助用户顺利进行远程连接。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
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社区 版权所有