at、cron周期性任务计划详解

一、一次性任务计划:at、batch

1.batch:系统自行选择在系统资源较空闲的时间去执行指定的任务

用法类似于at,但只要提交所需执行的命令

2.at:指定未来的某时间点执行一次某任务

(1)用法格式:at   [OPTION]...   TIME

1)TIME格式:

HH:MM [YYYY-mm-dd]:直接指明具体的时间

noon,midnight, teatime:中午、午夜、下午茶时间(下午四点左右)

tomorrow:明天

now+#:现在之后的多久,可使用表示单位为minutes, hours, days, OR weeks

2)OPTION常用选项

-l:查看作业队列,相当于atq

-f
/PATH/FROM/SOMEFILE:从指定文件中读取作业任务,不用交互式输入;

-d  #:删除指定的作业,相当于atrm;

-c  #:查看指定作业的具体内容;

-q
QUEUE:指明队列;

3)Ctrl+D :提交一次性任务,退出at

(2)示例:

1)创建一次性任务,并查看任务列表

at的作业有队列,用单个字母表示,默认都使用a队列;

一次性任务在执行完成后消失,不再在队列中显示,执行结果邮件发送给MAILTO指定的用户

2)查看单个任务的具体内容

指定任务的队列号,可查看其详细信息,用到的变量,命令,执行时间用户等信息

[[email protected]
~]# at -c 7

#!/bin/sh

#
atrun uid=0 gid=0

#
mail root 0

umask
22

HOSTNAME=localhost.localdomain;
export HOSTNAME

SHELL=/bin/bash;
export SHELL

HISTSIZE=1000;
export HISTSIZE

SSH_CLIENT=172.16.250.3950177\ 22; export SSH_CLIENT

QTDIR=/usr/lib64/qt-3.3;
export QTDIR

QTINC=/usr/lib64/qt-3.3/include;
export QTINC

SSH_TTY=/dev/pts/0;
export SSH_TTY

USER=root;
export USER

LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:mi=01\;05\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lz=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.bz=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.rar=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.axv=01\;35:\*.anx=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.axa=01\;36:\*.oga=01\;36:\*.spx=01\;36:\*.xspf=01\;36:;
export LS_COLORS

MAIL=/var/spool/mail/root;
export MAIL

PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin;
export PATH

PWD=/root;
export PWD

LANG=en_US.UTF-8;
export LANG

SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass;
export SSH_ASKPASS

HISTCONTROL=ignoredups;
export HISTCONTROL

SHLVL=1;
export SHLVL

HOME=/root;
export HOME

LOGNAME=root;
export LOGNAME

QTLIB=/usr/lib64/qt-3.3/lib;
export QTLIB

CVS_RSH=ssh;
export CVS_RSH

SSH_CONNECTION=172.16.250.3950177\ 172.16.249.161\ 22; export SSH_CONNECTION

LESSOPEN=\|\|/usr/bin/lesspipe.sh%s; export LESSOPEN

G_BROKEN_FILENAMES=1;
export G_BROKEN_FILENAMES

cd
/root || {

echo ‘Execution directory inaccessible‘
>&2

exit 1

}

${SHELL:-/bin/sh}
<< ‘marcinDELIMITER0fed9e36‘

cat
/etc/passed

marcinDELIMITER0fed9e36

3)删除指定任务(对比)

二、周期性任务计划:cron(crontab、anacron)

1.服务程序:cronle

cronle (6、7)主程序包,提供crond守护及相关辅助工具

确保crond守护进程(daemon)处于运行状态:

CentOS 7:systemctl  status 
crond.service

结果Active:
active (running) ... …

CentOS
6:service  crond  status

...
is running.

2.提交cron方式

(1)专用配置文件,有固定格式

(2)不建议使用文本编辑器直接编辑此文件;要使用crontab命令;

3.cron任务分类:

(1)系统cron任务:主要用于实现系统自身的维护;

系统cron的配置格式:/etc/crontabSHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

#
For details see man 4 crontabs

#
Example of job definition:

#
.---------------- minute (0 - 59)

#
|  .------------- hour (0 - 23)

#
|  | 
.---------- day of month (1 - 31)

#
|  | 
|  .------- month (1 - 12) OR
jan,feb,mar,apr ...

#
|  | 
|  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR
sun,mon,tue,wed,thu,fri,sat

#
|  | 
|  |  |

#
*  * 
*  *  * user-name 
command to be executed

注释:

1)每一行定义一个周期性任务,共7个字段;

*  * 
*  *  * : 定义周期性时间,分时日月周

user-name
: 运行任务的用户身份

command
to be executed:任务

2)环境变量不同于用户登录后获得的环境,建议命令使用绝对路径,或者自定义PATH环境变量;

3)执行结果邮件发送给MAILTO指定的用户

(2)用户cron任务:crontab命令

用户cron的配置格式:/var/spool/cron/USERNAME

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

#
For details see man 4 crontabs

#
Example of job definition:

#
.---------------- minute (0 - 59)

#
|  .------------- hour (0 - 23)

#
|  | 
.---------- day of month (1 - 31)

#
|  | 
|  .------- month (1 - 12) OR
jan,feb,mar,apr ...

#
|  | 
|  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR
sun,mon,tue,wed,thu,fri,sat

#
|  | 
|  |  |

#
*  * 
*  *  *  
command to be executed

注释:

1)每行定义一个cron任务,共6个字段;

2)环境变量不同于用户登录后获得的环境,建议命令使用绝对路径,或者自定义PATH环境变量;

3)邮件发送给当前用户;

4.*  * 
*  *  *时间表示法

(1)表示方法:特定值  * 
,   -  /

1)特定值:给定时间点有效取值范围内的值;

注意:day of week 和 day of month一般不同时使用;

2)*:  给定时间点上有效取值范围内的所有值;表“每..”

3) #,#,#:离散取值,  , 在时间点上使用逗号分隔的多个值;

4)#-#:连续取值:-, 在时间点上使用-连接开头和结束

5)/#:在指定时间点上,定义步长:
/#:#即步长;

注释:

1)指定的时间点不能被步长整除时,其意义将不复存在;

2)最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其它机制;

3)定义成每分钟任务:而在利用脚本实现在每分钟之内,循环执行多次;

(2)示例

3
* * * *:每小时执行一次;每小时的第3分钟;

3
4 * * 5:每周执行一次;每周5的4点3分;

5
6 7 * *:每月执行一次;每月的7号的6点5分;

7
8 9 10 *:每年执行一次;每年的10月9号8点7分;

9
8 * * 3,7:每周三和周日;

0
8,20 * * 3,7:

0
9-18 * * 1-5:

*/5 * * * *:每5分钟执行一次某任务;

5.crontab命令:

crontab [-u user] [-l | -r | -e] [-i]

-e:编辑任务;

-l:列出所有任务;

-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;

-i:在使用-r选项移除所有任务时提示用户确认;

-u
user:root用户可为指定用户管理cron任务;

注释:

(1)运行结果以邮件通知给当前用户;拒绝接收邮件

COMMAND > /dev/null   将正确结果导入到数据黑洞,只报告错误结果

COMMAND &> /dev/null   将所有结果都导入数据黑洞

(2)定义COMMAND时,如果命令需要用到%要对其转意;但放置于单引号中的%转意

6.如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现;

时间: 2024-12-30 05:31:19

at、cron周期性任务计划详解的相关文章

Linux周期性任务计划详解

一次性任务执行: at,batch at: 交互式:让用户在at>提示符输入多个要执行命令: 批处理:将任务的各命令写入文件由at进行调用: 使用格式: at TIME at > Ctrl+d:提交任务 at作业有队列:使用单个字母表示 查看作业:at -l =atq [[email protected] ~]# at 10:46 at> ls -ld /etc at> <EOT> job 1 at 2015-08-25 10:46 [[email protected]

周期性任务计划详解

linux周期性任务计划: 相关命令 未来的某时间点执行一次某任务:at命令, batch命令. 周期性运行某任务:crontab命令 执行结果:会通过邮件发送给用户 查看linux的邮件端口是否开启: 25号端口是 smtp #简单邮件传输协议(SMTP) [centos@web ~]$ ss -tnl | grep '25' \LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 100 ::1:25 :::* [centos@web ~]$ netstat -tnl

linux下任务计划详解

一次性任务计划 用at(指定时间执行任务,需开启atd服务)   batch(不指定执行时间,在系统空闲时/系统负载较低时自动执行任务)等命令来实现 周期性任务计划 cron(需启动crond服务) at介绍 at now+3min|11:30|noon,midnight,teatime(更多时间指定格式见man at页)  回车  在>提示符下可输入多行命令,用ctrl+d提交任务 atq 查看当前等待执行的atd的命令队列,或  at  -l at会将执行结果(即执行输出)以邮件方式发给任务

Oracle执行计划详解

 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle访问数据的存取方法 1) 全表扫描(Full Table Scan

mysql explain执行计划详解

1).id列SELECT识别符.这是SELECT查询序列号.这个不重要,查询序号即为sql语句执行的顺序 2).select_type列常见的有: A:simple:表示不需要union操作或者不包含子查询的简单select查询.有连接查询时,外层的查询为simple,且只有一个 B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary.且只有一个 C:union:union连接的两个select查询,第一个查询是de

MySQL 优化sql explain执行计划详解

mysql explain执行计划详解 1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有:A:simple:表示不需要union操作或者不包含子查询的简单select查询.有连接查询时,外层的查询为simple,且只有一个B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary.且只有一个C:

linux任务计划详解

linux任务计划.周期性任务执行 未来的某个时间点执行一次某任务:at,batch 周期性运行某任务:crontab     执行结果:会通过邮件发给用户 mail 简单使用 查看本地电子邮件服务是否开启         ~]$ netstat -tnlp     ~]$ ss -tnl     确保 127.0.0.1:25 处于监听状态就行 本地电子邮件服务:    smtp:simple mail transmission proticol    pop3:post Office Pro

MSSQLSERVER执行计划详解

序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博文给你:SqlServer性能检测和优化工具使用详细 ,sql语句的优化分析,T-sql语句查询执行顺序. 执行计划简介 1.什么是执行计划? 大哥提交的sql语句,数据库查询优化器,经过分析生成多个数据库可以识别的高效执行查询方式.然后优化器会在众多执行计划中找出一个资源使用最少,而不是最快的执行

explain 执行计划详解

id:id是一组数字,表示查询中执行select子句或操作表的顺序,如果id相同,则执行顺序从上至下,如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行. id列为null的就表是这是一个结果集,不需要使用它来进行查询. select_type: simple:表示不需要union操作或者不包含子查询的简单select查询.有连接查询时,外层的查询为simple,且只有一个. primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_