Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

进程管理(二)之计划任务

$
0
0

进程管理(二)之计划任务

一、计划任务:

1 、未来的某时间点执行一次任务:

( 1 ) at :跟一个时间点,到点了自动运行指定的任务

( 2 ) batch :系统自行选择空闲时间去执行此处指定的任务

2 、周期性运行某任务: cron

二、 at 命令:

1 、 at 命令: at [option] TIME
进程管理(二)之计划任务

注:当输入完成后,使用 Ctrl+d 结束,不能使用 Ctrl+c 。

2 、常用选项:

-V 显示版本信息 :


进程管理(二)之计划任务

-l: 列出指定队列中等待运行的作业;相当于 atq


进程管理(二)之计划任务

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

-c: 查看具体作业任务

-f /path/from/somefile :从指定的文件中读取任务

-m: 当任务被完成之后,将给用户发送邮件,即使没有标准输出

注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

3 、 at 的时间格式:

noon (中午); midnight (子夜,凌晨整点); teatime (午茶时间,即下午四点)( 4pm ); tomorrow

now+#{minutes,hours,days, OR weeks}

( 1 )在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务: HH:MM 02:00

( 2 )规定在某年某月的某一天的特殊时刻进行该项任务: HH:MM YYYY-MM-DD 04:00 2016-09-20

( 3 )规定在未来某个时间点执行该项任务: HH:MM[am|pm] [Month] [Date]

04pm March 17 ; 17:20 tomorrow

( 4 ) HH:MM[am|pm] + number [minutes|hours|days|weeks] ,在某个时间点再加几个时间后才进行该项任务: now + 5 minutes 和 04pm + 3 days

4 、 at 任务:

1 、执行方式: 1 )交互式 2 )输入重定向 3 ) at -f 文件


进程管理(二)之计划任务

依赖与 atd 服务 , 需要启动才能实现 at 任务


进程管理(二)之计划任务

2 、 at 队列存放在 /var/spool/at 目录中(机器关机也不会丢失,但如果任务没有正常执行,则在第二天的时间点执行)


进程管理(二)之计划任务

删除 at 计划任务:


进程管理(二)之计划任务
进程管理(二)之计划任务

3 、通过 /etc/at.{allow,deny} 控制用户是否能执行 at 任务(系统正常情况下是没有 at.allow 这个文件的,需要手动建立)

4 、 at 的使用设置:

先寻找 /etc/at.allow (相当于白名单)文件,文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at ( 即使没有写在 at.deny 当中 ) ;如果 /etc/at.allow 不存在,就寻找 /etc/at.deny (相当于黑名单) 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者则可使用 at 命令;如果两个文件都不存在,只有 root 可以使用 at 这个命令。

三、周期性任务计划 cron :

1 、确保 crond 守护处于运行状态:

CentOS 7 :


进程管理(二)之计划任务

CentOS 6 :


进程管理(二)之计划任务

2 、相关的程序包:

cronie: 主程序包,提供 crond 守护进程及相关辅助工具

cronie-anacron : cronie 的补充程序;用于监控 cronie 任务执行状况;如 cronie 中的任务在过去该运行的时间点未能正常运行,则 anacron 会随后启动一次此任务

crontabs :包含 CentOS 提供系统维护任务

3 、计划任务:

( 1 )系统 cron 任务:系统维护作业

/etc/crontab


进程管理(二)之计划任务

系统的计划任务 : /etc/crontab

/etc/cron.d/ 配置文件

/etc/cron.hourly/ 脚本

/etc/cron.daily/ 脚本

/etc/cron.weekly/ 脚本

/etc/cron.monthly/ 脚本


进程管理(二)之计划任务

( 2 )用户 cron 任务:

crontab 命令:每个用户都有专用的 cron 任务文件: /var/spool/cron/USERNAME

crontab 命令格式: crontab[-u user] [-l | -r | -e] [-i]

使用选项: -l: 列出所有任务;

-e: 编辑任务;

-r: 移除所有任务;

-i :同 -r 一同使用,以交互式模式移除指定任务

-u user: 仅 root 可运行,指定用户管理 cron 任务

控制用户执行计划任务: /etc/cron.{allow,deny} ,效果如上面 at 的控制是一样的。

注意:运行结果的标准输出和错误以邮件通知给相关用户

(1) COMMAND > /dev/null

(2) COMMAND &> /dev/null

对于 cron 任务来讲, % 有特殊用途;如果在命令中要使用 % ,则需要转义;不过,如果把 % 放置于单引号中,也可以不用转义

4 、日志: /var/log/cron

5 、时间表示格式:

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

# 0 0 1 * * 每月的 1 号凌晨零点

(2) * :给定时间点上有效取值范围内的所有值,表示“每 … ”

# 30 0 20 * * 每月的 20 号凌晨零点 30 分(有效时间如 30 分,每月的有效日 20 天)

(3) 离散取值: #,#,# 如: 0 0 1,10,20 * * 每月的 1 号、 10 号、 20 号的凌晨零点

(4) 连续取值: #-# 如: 0 0 10-20 * * 每月的 10 号到 20 号的凌晨零点

(5) 在指定时间范围上,定义步长: /# , # 即为步长

*/20 0 1 * * 每月的 1 号凌晨零点每二十分钟执行一次

6 、系统默认设置:

@reboot Run once after reboot (机器重启后执行)

@yearly 0 0 1 1 * (每年的一月一号凌晨零点执行一次)

@annually 0 0 1 1 * (每年的一月一号凌晨零点执行一次)

@monthly 0 0 1 * * (每月的一号凌晨零点执行一次)

@weekly 0 0 * * 0 (每周的凌晨零点执行一次)

@daily 0 0 * * * (每天的凌晨零点执行一次)

@hourly 0 * * * * (每小时执行一次)

7 、 anacron 系统:运行计算机关机时 cron 不运行的任务, CentOS6.0 以后版本取消 anacron 服务,由 crond 服务管理。

配置文件: /etc/anacrontab ;负责执行 /etc/ cron.daily /etc/cron.weekly /etc/cron.monthly 中系统任务; /etc/cron.hourly/ 由 /cron.d/0hourly 执行


进程管理(二)之计划任务

8 、管理临时文件:

rhel6.0 使用 /etc/cron.daily/tmpwatch 定时清除临时文件

rhel7.0 使用 systemd-tmpfiles-setup 服务实现

配置文件:

/etc/tmpfiles.d/*.conf

/run/tmpfiles.d/*.conf

/usr/lib/tmpfiles/*.conf

/usr/lib/tmpfiles.d/tmp.conf

命令: systemd-tmpfiles clean|remove|create configfile

9 、 at 和 crontab 使用格式的对比:

at

crontab

Create


Viewing all articles
Browse latest Browse all 11063

Trending Articles