#22 系统进程调度、at、batch、mail、crontab

Linux系统的进程调度(任务调度)

进度调度:在未来某个时间点,让系统自动执行我们事先编写好的命令或脚本的列表,从而使得即使用户不在计算机旁边也可以按时完成任务;

为了能够进行进程调度,就必须要有一种机制能够识别事件发生的时间并且能够运行用户所预期的命令;这种机制在Linux中是通过特定的守护进程来实现的;

这类守护进程包括:

atd:

将预先编写好的命令在未来某个时间点执行一次;

crond:

将预先编写好的命令在未来的符合条件的时间点重复执行;

查看此类守护进程是否正常运行:

centos6:

service {atd|crond} status

结果为runnig或者“正在运行”,都表示其正常工作

centos7:

systemctl status {atd.service|crond.service}

结果为active(runnig)就表示其正常工作

所有的进程调度的结果都会以电子邮件的方式发送到用户的邮箱中;

本地电子邮件服务:

SMTP:simple mail transfer protocol,简单邮件传输协议,TCP/25;

POP3:post-office protocol version 3,邮局协议第三版,TCP/110;

IMAP4:internet mail access protocol version 4,互联网邮件访问协议第四版,TCP/143;

整个电子邮件系统分成四大部分:

MUA:mail user agent,邮件用户代理,帮助用户发送电子邮件到服务器或者帮助用户从服务器接收电子邮件的应用程序;

MTA,MDA,MRA

常用的MUA:

浏览器,Outlook,Foxmail,mail|mailx

mail [-s SUBJECT] USERNAME[@HOSTNAME]

/var/spool/mail/username就是每个用户的邮件;

为了能够非交互的发送邮件,可以使用输入重定向或管道;

atd守护进程能够识别和完成由at命令、batch命令制作的任务计划;

周期性执行任务计划:cron

cronie软件包,提供cron守护进程以及cron的其他管理工具;

cron任务通常分为两类:

系统cron任务:/etc/crontab

SHELL=/bin/bash

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

MAILTO=root

HOME=/

# 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.

*  *  *  *  *:定义周期执行任务的时间

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

command to be executed:应该执行的任务命令及命令行参数;

注意:为了保证任务能够准确执行,命令通常是绝对路径填写;

2.各个字段之间使用一个或多个空白字符进行分隔;

3.任务运行的结果以邮件的方式直接发送给root用户;

用户cron任务:/var/spool/cron/USERNAME

SHELL=/bin/bash

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

MAILTO=root

HOME=/

# 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.

*  *  *  *  *:定义周期执行任务的时间

command to be executed:应该执行的任务命令及命令行参数;

注意:为了保证任务能够准确执行,命令通常是绝对路径填写;

2.各个字段之间使用一个或多个空白字符进行分隔;

3.任务运行的结果以邮件的方式直接发送给用户;

时间表示法:

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

0  5  3   9  *

0:分钟

5:小时

3:日期

9:月份

*:星期

2.通配符时间:*,表示“每...”之意,给定时间的所有有效值;

*  *  *  *  *

3.离散时间:在给定的时间点上,使用逗号分隔;

0  8,20  *  *  1,3,5

每周1,3,5 早8点到晚8点

4.连续时间:在给定的时间点上,使用减号分隔;

0  8  *  *  1-5

5.步长时间:在给定的时间电商,使用除号分隔;

*/2  *  *  *  *

*/7  *  *  *  *  此种方式无法实现每7分钟间隔执行计划任务(单位必须能被整除);

注意:

1.指定的步长必须能被时间点的数值整除,否则,无意义;

2.最小的时间单位是分钟,如果计划以秒为执行计划任务的时间单位,必须借助于其他机制;

at:在指定时间执行命令。

选项:

-q QUEUE;

-f FILE;

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

-d JOB_ID:清除指定的计划作业,相当于atrm;

-c:想看置顶的作业内容;

at [option] time

time:

1.HH:MM [YYYY-mm-dd]

2.noon,midnight,teatime

3.tomorrow

4.now+#UNIT  UNIT:min,hours,days,weeks,months,years,...

at定义的作业有队列的概念,通常队列使用单个字母来表示,默认是a;

at -q QUEUE_NAME TIME

例子:

at 5pm+3 days(三天后的下午 5 点锺执行/bin/ls)

at> /bin/ls

at> job 7 at 2013-01-08 17:00

batch命令:batch命令在定义任务的时候,无需指定时间,是由系统自行选择在系统比较空间的时候,完成此计划任务;其他的配置与at命令完全相同;

选项:

-f:指定包含具体指令的任务文件;

-q:指定新任务的队列名称;

-m:任务执行完后向用户发送E-mail。

例子:

batch

at> echo 1234

at> <EOT>

job 5 at Sun Apr 28 08:49:00 2013

mail:命令行的电子邮件发送和接收工具。

选项:

-b<地址>:指定密件副本的收信人地址;

-c<地址>:指定副本的收信人地址;

-f<邮件文件>:读取指定邮件文件中的邮件;

-i:不显示终端发出的信息;

-I:使用互动模式;

-n:程序使用时,不使用mail.rc文件中的设置;

-N:阅读邮件时,不显示邮件的标题;

-s<邮件主题>:指定邮件的主题;

-u<用户帐号>:读取指定用户的邮件;

-v:执行时,显示详细的信息。

例子:

mail -s "Hello from linuxde.net by shell" [email protected]

hello,this is the content of mail.

welcome to www.linuxde.net

注意:

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

crontab:用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

选项:

-u username:超级用户为其他用户设置或编辑用户cron任务时使用;

-l:查看所有的已经被定义的计划任务;

-e:使用vi编辑器编辑crontab文件;

-r:移除所有的计划任务;不推荐使用;

-i:在使用-r选项时,进行交互;

例子:

crontab -e

*/6  *  *  *  * sleep 60 ‘;‘ ls >/dev/null

时间: 2024-08-09 10:44:36

#22 系统进程调度、at、batch、mail、crontab的相关文章

[9-5]Mail机制和任务计划at、batch、crontab知识梳理和课后练习

本文旨在复习Linux内部的Mail机制以及任务计划基本原理和用法. 知识储备 任务计划通常分为2类: 未来一次性执行的计划[at.batch] 未来周期性执行的计划[crontab] 无论是at.batch.crontab,任务计划在执行后都会通过邮件的方式发送给管理员和用户,请注意无论执行成功或者失败都会发送邮件哦; 邮件是Mail命令来支撑的,当然Mail还可以支撑其他任何需要调用邮件的程序或服务,很多维护类的工作会以邮件的方式发送给管理员; 每个用户被创建后系统会给用户一个邮筒,默认是/

Nagios(CenOSX64位下用系统自带的mail调用第三方邮件服务器的方法)

Nagios:CenOSX64位下用系统自带的mail调用第三方邮件服务器来发送警报邮件,发送地址可以自定义 利用外部邮箱发送邮件的方法 bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的 资源占用.而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的: 修改/etc/nail.rc (/etc/mail.rc) 在文件末尾添加如下内容,并做相

Linux未来任务的调度——at,batch,crontab命令

### 在linux中,我们可以实现对于任务的未来调度,从而可以借助于linux实现半自动化运维操作方式,简而言之就是可以在未来的某个时间点,系统可以自动运行我们部署的任务 前提: 需要一个准确的时间 可以支持任务调度的应用程序 **注意**: 在计划任务中,所有执行的命令的输出结果,这类及结果均以邮件的方式发送至指定的用户邮箱中: 邮箱的发送: mail命令 mail [-s SUBJECT]  USERNAME[@DOMAINNAME] (Ctrd + d发送) 系统用户的邮箱的目录/var

linux计划任务at、batch和crontab命令

在我们日常服务器管理中,不管是Windows还是Linux都不可避免的会用到计划任务这个东西.比如说我们某天要在凌晨3点进行一次完整备份,作为运维人员咱不能设个闹钟凌晨三点爬起来一台台的敲命令打包上传到文件服务器吧.假如你够勤快.有干劲.精神好,可服务器有100台呢.... 通常我们的做法是写个脚本,指定时间计算机自动执行完成任务然后把错误输出发邮件到邮箱.第二天检查下邮件就可以了. 计划任务分为2种,一种是在未来的某个时间点执行一次任务,然后是周期性的执行任务. linux下某个时间点执行一次

zabbix使用系统自带mailx(mail)SMTP发送邮件

0x01,环境介绍: 我们用的是微软的邮箱打算用SMTP方式发送邮件.先登录账户看官方给出SMTP信息. 0x02,系统mailx(mail)设置. 通过命令可以看到,mail实际上是mailx的快捷方式.然后在/etc/mail.rc里加入账号等信息. SMTP加密方式是:STARTTLS set from=Zabbix使用的发送邮件地址 set smtp=smtp.office365.com set smtp-auth-user=Zabbix使用的发送邮件地址 set smtp-auth-p

node在Fedora 22系统下开发环境搭建

事实上,环境搭建在linux系统还是比較简单的,下载已经编译好的包,配置一下环境变量. 或者下载源代码,自己编译. 这里记录一下,主要是node版本号变化节奏很块的情况下.怎样配置一次环境变量就不要再配置了. 下载并解压node-v0.12.7-linux-x64二进制文件, 文件夹: [[email protected] node-v0.12.7-linux-x64]$ pwd /home/doctor/opt/node-v0.12.7-linux-x64 配置文件: [[email prot

禁止Centos系统You have new mail in /var/spool/mail/root提示

https://blog.csdn.net/oyym_mv/article/details/54018619 原文地址:https://www.cnblogs.com/andy9468/p/9090003.html

Linux学习笔记:Linux系统的进程调度(任务调度)

今天我们学习了Linux系统的进程调度,进程调度是为了在未来某个时间点,让系统自动执行我们事先编写好的命令或脚本的列表,从而使得即使用户不在计算机旁边也可以按时完成任务.这样有利于我们更好的进行任务计划以及在需要执行任务的时候自动完成我们设定好的命令,从而完成任务. 当然为了能够进行进程调度,就必须要有一种机制能够识别事件发生的时间并且能够运行用户所预期的命令:这种机制在Linux中是通过特定的守护进程来实现的.这类的进程有: atd:将预先编写好的命令在未来某个时间点执行一次. crond:

Linux定时任务工具crontab详解及系统时间同步

linux下定时执行任务的方法  在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出. 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为"crontab",是"cron table"的简写. 一.cron在3个地方查找配