六、任务计划管理cron

简介:
  • at:定时运行命令

  作用:at命令再指定时刻执行指定的命令序列

  用法:at [-V][-q 队列][-f file][-m] time


常用选项:

  -V:输出版本号

  -q:选用-q参数则可选队列名称,队列名称可以是a-z和A-Z之间的字母,队列字母顺序越高,队列优先级越高。

  -f:从文件中读取命令或者shell脚本,而非在提示后指定他们。

  -m:执行完作业后发送邮件给用户

  time:指定作业执行时间
    绝对时间: HH:MM, DD.MM.YY MM/DD/YY
    相对时间: now+# 单位: minutes, hours, days, weeks
    模糊时间: noon, midnight, teatime

[root@mylinux home]# at -f date 12:20     #12:20执行date文件中的命令
job 6 at 2017-04-22 12:20
[root@mylinux home]# cat date             #date文件中的命令
ls -l
date
[root@mylinux home]# date
2017年 04月 22日 星期六 12:20:19 CST
You have new mail in /var/spool/mail/root
[root@mylinux home]# mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 12 messages 2 new 6 unread
    1 Cron Daemon           Mon Jul 18 23:00  23/961   "Cron <root@myli"
    2 Cron Daemon           Tue Jul 19 01:00  23/961   "Cron <root@myli"
    3 Cron Daemon           Tue Jul 19 01:20  23/961   "Cron <root@myli"
    4 Cron Daemon           Sat Aug 27 21:40  23/857   "Cron <root@myli"
    5 Cron Daemon           Sat Aug 27 22:00  23/857   "Cron <root@myli"
    6 Cron Daemon           Sat Aug 27 22:20  23/857   "Cron <root@myli"
 U  7 Cron Daemon           Sat Aug 27 22:40  23/856   "Cron <root@myli"
 U  8 Cron Daemon           Sat Aug 27 23:00  23/856   "Cron <root@myli"
 U  9 Cron Daemon           Sun Jan  1 08:00  23/858   "Cron <root@myli"
 U 10 Cron Daemon           Sat Apr 15 17:00  23/961   "Cron <root@myli"
>N 11 root                  Sat Apr 22 12:20  21/877   "Output from you"
 N 12 root                  Sat Apr 22 12:22  21/877   "Output from you"
& 11   
Message 11:           #邮件中的内容为定时任务执行过后的输出
From root@mylinux.localdomain  Sat Apr 22 12:20:01 2017
Return-Path: <root@mylinux.localdomain>
X-Original-To: root
Delivered-To: root@mylinux.localdomain
Subject: Output from your job        5
To: root@mylinux.localdomain
Date: Sat, 22 Apr 2017 12:20:01 +0800 (CST)
From: root@mylinux.localdomain (root)
Status: R

总用量 261004
-rw-r--r--  1 root root        11 4月  22 12:17 date
-rw-r--r--  1 root root 266980208 4月  19 13:59 dow.zip
drwxr-xr-x  3 root root      4096 2月  21 19:11 python_web
drw-r--r-x  2  500  500      4096 4月  29 2016 samba
drwxr-xr-x  2 root root      4096 9月   3 2016 shell
drwxr-xr-x 11 root root      4096 3月  24 16:40 wswp-code
2017年 04月 22日 星期六 12:20:00 CST
--More--
  • atq:显示目前使用at命令后执行的命令队列

 作用:使用atq命令查询已经设定的命令序列。


常用选项:

  -V:输出版本号

  -q:选用-q参数则可选队列名称,队列名称可以是a-z和A-Z之间的字母,队列字母顺序越高,队列优先级越高。

[root@mylinux home]# atq
4       2017-04-22 15:30 a root
7       2017-04-22 12:30 a root
  • atrm:删除at命令中执行的命令

 作用:atrm命令可以删除at命令中待执行的命令队列

[root@mylinux home]# atrm 4    #删除4号任务
[root@mylinux home]# atrm 7    #删除7好任务
[root@mylinux home]# atq
  • batch:在系统负载水平允许的条件下执行命令

  用法:batch [-V][-q 队列][-f file][-mv] [time]

常用选项:

  -V:输出版本号

  -q:选用-q参数则可选队列名称,队列名称可以是a-z和A-Z之间的字母,队列字母顺序越高,队列优先级越高。

  -f:从文件中读取命令或者shell脚本,而非在提示后指定他们。

  -m:执行完作业后发送邮件给用户

  -v:显示作业要执行的事件

命令控制列表: /etc/at.deny /etc/at.allow

  这两个文件可以限制对at和batch命令的使用,用法都是每行一个用户。两个文件都不允许使用空白字符。当控制文件修改时,at守护进程不必重启。每次用户尝试执行at和batch时,控制列表都会被读取,当然root用户总是可以执行at和batch命令。如果at.allow文件存在,只有其中列出的用户才能使用at或batch命令,at.deny文件会被忽略;如果at.allow文件不存在,所有在at.deny文件中列出的用户都将禁止使用at和batch命令。

6.2、周期任务计划 crontab/anacron

 可以使用crontab将系统设定在每天、每周和每月的某个时刻自动运行某个命令或者应用程序,实现系统资源的循环定时调用。crontab仅仅是一个文本文件,可以使用任何UNIX编辑器进行编辑。其包含四种代码行:空行、注释、环境变量和命令。

cron预设的5个环境变量:

  PATH默认是/usr/bin:/bin

  SHELL预设值:/bin/sh

  LOGNAME初始化为crontab所有者用户名

  HOME设置为crontab所有者的目录,如/home/joe

  MAILTO设置为crontab所有者的名称

  cron守护进程是一个由实用程序和配置文件组成的小型子系统。cron的组件包括守护进程本身;一组系统范围的配置文件;一组针对特定用户的配置文件;一个用来添加、删除用户配置文件的实用程序;以及一个简单的访问控制列表。一般来说cron配置文件或者cron作业列表成为crontab或cron时间表。

可以在这些位置定义与系统相关的作业:

cron.d/       cron.deny     cron.monthly/ cron.weekly/  

cron.daily/   cron.hourly/  crontab    

  cron守护进程连续运行,每分钟检查一次配置文件的修改,cron读取系列范围和针对用户的crontab的调度计划并执行这一分钟内应该执行的所有命令。这个守护进程还不或每个作业的输出,并通过电子邮件发送给作业的所有者。

  • crontab命令的使用

crontab

-l: 列出当前用户的所有cron任务  

-e: 执行文字编辑器来设置时程表

-r: 移除所有任务   

-u USERNAME: 管理其用户的cron任务(root使用)

-i:同-r一同使用,以交互式模式让用户有选择地移除指定任务

系统任务配置文件:/etc/crontab

f1  f2  f3  f4  f5 user-name command
#f1表示分钟,f2表示小时,f3表示一个月份中的第几天,f4表示月份,f5表示一个星期中的第几天
#user-name执行该任务的用户,command表示要执行的程序

用户任务配置文件:/var/spool/cron/USERNAME

f1  f2  f3  f4  f5  command
#f1表示分钟,f2表示小时,f3表示一个月份中的第几天,f4表示月份,f5表示一个星期中的第几天
#command表示要执行的程序
时间通配表示:
  *: 对应时间的所有有效取值     
  1,2,5: 离散时间点:    
  12-23:连续时间点:     
  /#:对应取值范围内每隔#执行一次,如/20
 0 * * * * /bin/ls           #每小时的第0分钟执行一次/bin/ls
 2 0/20 6-12 * 12 * /usr/bin/backup 
                             #在12月,每天早上6-12点,每隔20分钟执行一次/usr/bin/backup

常用调度计划的简写形式:

@reboot   每当计算机重新引导时运行命令

@daily    每天一次的简写形式

@weekly   每周一次的简写形式

@annually 每年一次的简写形式,也可以@yearly

@midnight 在每天午夜运行命令,相当于@daily

  • anacron命令

 anacron和cron相似的任务调度器,只不过他不要求系统持续运行。anacron能够实现让cron因为各种原因在过去的时间该执行而未执 行的任务再恢复正常执行一次。

  anacron任务被列在配置文件/etc/anacrontab 中,文件的每一行代表一项任务;格式为:

period   delay    job-identifier   command
#period:命令执行的频率(天数)
#delay:延迟时间(分钟)
#job-identifier:人物的描述,用在anacron的消息中,并为作业时间戳文件的名名称,不能包含非空格符
#command:要执行的命令

  对于每项任务,anacron先判定该任务是否在配置文件的period字段中指定的期间内被执行了。如果没有执行,那么anacron会等待delay字段中指定的分钟数,然后执行命令。

  任务完成后anacron在/var/spool/anacron目录内的时间戳文件中记录日期,只有日期被记录(无时间),而且job-indentifier的值被用作时间戳文件的名称。



本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/1918444,如需转载请自行联系原作者

相关文章
|
人工智能 Serverless 云栖大会
通义星尘、通义灵码、镇岳510……一文了解2023云栖重大发布!
今天,2023云栖大会进行至第2天。 本届云栖大会,我们发布了千亿级参数规模的大模型通义千问2.0、一站式模型应用开发平台阿里云百炼以及8个行业大模型,同时全面升级了人工智能平台PAI,并对超40款云产品提供了Serverless的能力,推出全球首款容器计算服务ACS。
56557 35
|
Python
Python中 If语句条件测试
Python中 If语句条件测试
141 1
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之怎么批量导出任务
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
12月前
|
安全
C 空指针的使用注意点
在 C 语言中,空指针(NULL pointer)是指不指向任何有效地址的指针。使用时需注意以下几点:1. 初始化指针,如 `int *ptr = NULL;` 2. 解引用前检查有效性,如 `if (ptr != NULL)` 3. 函数参数中处理空指针 4. 用作标识值 5. 检查动态内存分配结果 6. 释放内存后设为 `NULL` 7. 多级指针需逐层检查 8. 谨慎赋值空指针。空指针是强大的工具,但需谨慎使用以确保程序安全稳定。
242 12
|
前端开发 JavaScript API
前端技术栈方向研究报告
前端技术栈方向研究报告
301 0
|
Java 编译器
Java 从入门到进阶之路(七)
Java 从入门到进阶之路(七)
|
算法 C语言
用冒泡排序模拟C语言中的内置快排函数qsort!
用冒泡排序模拟C语言中的内置快排函数qsort!
取一个整数 a 从右端开始的 4~7 位
取一个整数 a 从右端开始的 4~7 位。
72 1
|
前端开发 JavaScript 微服务
拥抱微前端:构建灵活可扩展的现代化应用
在当今快节奏的软件开发领域,传统的单体应用已经无法满足不断变化的需求。微前端架构作为一种创新的解决方案,通过将前端应用拆分成多个独立的小块,实现了更好的可维护性、可扩展性和独立部署能力。本文将介绍微前端的概念、原理以及实践方法,帮助读者深入了解并应用这一先进的技术。