Linux之任务计划

在了解linux任务计划之前,先来了解linux的邮件服务,因为任务计划默认会调用mail邮件服务来发送邮件。以下对mail邮件服务,进行初步了解。主要对邮件发送方法,查看邮件等。

常见邮件应用协议:

SMTP:(Simple Mail Transmission Protocol)简单邮件传输协议,TCP 25端口,smtps (linux操作系统默认启用smtp服务)

POP3:(Post Office Protocol)第3版邮局协议,TCP 110端口,pops

IMAP4:(Internet Mail Access Protocol)因特网消息访问协议,TCP 143端口,imaps

Mine/MIME:(Multipurpose Internet Mail Extensions)多用途、多功能互联网邮件扩展:以文本的方式对二进制数据做重新编码,并能够实现以文本协议发送二进制数据。常用编码编码方式:base64.。

语法:mail [-iInNv][-b<地址>][-c<地址>][-f<邮件文件>][-s<邮件主题>][-u<用户帐号>][收信人地址]

常见参数选项

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

-s:邮件的主题

-u<USERNAME>:读取指定用户的邮件

三种常用格式发信

1、当前shell当成编辑器来用,编辑完内容后Ctrl+D结束

mail -s mytest [email protected]

2、用管道编辑内容发送

echo "mytest mail mytest2" |mail -s mytest2 [email protected]

3、以文件内容作为邮件内容发信

mail -s mytest3 [email protected] < /tmp/mytest3.txt

任务计划可以分两种:一次性任务作业(at命令、batch命令);周期性任务作业(crontab命令、anacron)

一次性任务作业:at,一种交互式命令,有两种执行模式:交互式,它可以让用户在at>提示符下输入一个或多个命令;批处理式,将任务的命令写入文件中,由at调用

batch的命令使用与at的区别是,batch不能设定执行的时间,只能由系统自动选择空闲的时间执行,这里不做过多介绍,只是简单了解

注意:Ctrl+d为提交作业;任务执行的结果默认会以邮件的方式发送给提交者

语法:at [参数] 时间点

常见参数选项

-v:显示任务将被执行的时间

-c:显示任务的内容

-q<列队>:指定列队

-f<文件>:从指定的文件中读取要运行的作业

-t<时间参数>:以时间参数的形式提交要运行的任务

TIME:时间格式

hh:mm(小时:分钟)

midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)

now+time-units ,now就是当前时间,time-units是时间单位,可以是minutes(分钟)、hours(小时)、days(天)、weeks(星期)22

以下交互式模式,示例:在22:01执行查看/tmp目录信息,显示/etc/fstab自动挂载信息两个任务

注:作业有队列的概念,默认情况下,所有作业都在一队下,作业列表是[a-z],使用命令 at –q [a-z]

以下文件模式,示例:在23:00执行文件fileat,fileat查看/tmp目录信息并且显示/etc/fstab自动挂载信息

周期性任务作业

crond是守护进程:指运行在后台随时监听用户的请求随时响应的进程。

cron分系统级别和用户级别,系统级别:系统自动执行的,以系统的环境变量(非登陆时shell)去运行该些进程,因此在编写脚本的时候被调用的命令建议写全路径,不然会出现执行脚本的

时候找不到路径的情况。执行结果默认会以邮件发方式发送给root用户,如果不想发邮件可以任务作业重定向至/dev/null(也称黑洞)

系统cron的文件保存/etc/crontab中,用户crontab在/var/spool/cron/UserName中

语法:crontab –l|-r|-e|-i [username]

常见参数选项

-l:显示作业文件的内容

-i  作业前给提示,常与r并用

-r  删除作业任务

-e  编辑作业任务

管理员加上-u 可以为普通用户指定任务:如crontab –l –u [普通用户]

以下强调一下上面描述的注意事项:

(1) 如果不想接收任务执行结果的通知邮件:COMMAND > /dev/null或COMMAND &> /dev/null

(2) 对于crontab文件来讲,%有特殊功用;如果命令中会出现%, 要记得转义,或者用单引号对其引用

(3) crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中的任务要使用绝对路径

下面简要解析crontab中时间格式

# 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

第一段:分钟 0—59

第二段:小时 0—23

第三段:日期 1—31

第四段:月份 1—12

第五段:星期几,0代表星期日 0—6

举一些小例子说明时间表示法:

1)每个时间都应该使用其可用的有效取值范围内的值;

2 3 4 * *      //4号3点2分

2)某时间位上的*表示每

* 3 4 * *       //4号3点每一分钟都执行

3)-:连续的时间相邻取值

15-18 3 4 * *   //4号3点的15分到18分每分执行一次

4),:离散的时间取值

10,15,20 3 4 * *   //4号3点的10分,15分,20分各执行一次

5)/#,表示在指定时间范围内每隔#一次

*/15 3 4 * *      //4号3点每15分钟执行一次

6)如果我们不……想查看执行的结果呢,可以把输出重定向,如:

0 */2 * * *   /bin/echo “mytest1” &> /dev/null

示例:4号3点2分查看/etc/fstab文件

注:anacron和cron 相似的任务调度器,只不过它并不要求系统持续运行,它可以用来运行通常由 cron 运行的每日、每周、和每月的作业;任务被列在配置文件 /etc/anacrontab 中。对于每项任务,anacron 先判定该任务是否已在配置文件的 period 字段中指定的期间内被执行了。如果它在给定期间内还没有被执行,anacron 会等待 delay 字段中指定的分钟数,然后执行command 字段中指定的命令;

练习:

1、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;

2、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss

3、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线

或者使用

0 0 * * * /usr/bin/egrep (egrep ‘^(S|M)‘ /proc/meminfo;echo "====================") >> statistics/meminfo.txt

时间: 2024-10-12 09:27:47

Linux之任务计划的相关文章

Linux进程与计划任务

Linux进程与计划任务 linux进程及作业管理 进程 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等特权操作模式切换(理想状态):70%CPU时间用户模式+30%CPU时间内核模式进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的存在生命周期的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述

Linux下的计划任务和日志管理

Linux下的计划任务和日志管理   一:实验环境: 1:虚拟机 2:两个linux系统 二:实验目标 1:at 定制单次执行的计划任务 2:cron定制周期性计划任务 3:配置脚本实现周期性任务 4:配置公司内网服务器每天自动开关机 5:Linux系统日志记录规律 6:自定义日志记录方式 7:配置远程收集日志服务器 三:实验步骤 1):at 定制单次执行的计划任务 第一块 at 定制单次执行的计划任务 前提:服务:atd  必须开启 #查询atd是否运行,只有运行,才能工作. [[email 

我的Linux成长路---001 Linux学习初期计划

Linux学习初期计划 1.Linux基础 Linux历史.Linux版本.Linux安装.shell命令 2.Linux系统管理 用户管理.文件权限管理.磁盘管理.进程管理.自动化任务.安装程序... 3.Linux服务器 用Linux做DNS.DHCP.VPN.流媒体.FTP.Web.代理服务器.邮件服务器... 用Linux实现路由功能.NAT功能 4.Linux安全 网络安全.系统安全.入侵检测 5.mySQL数据库 6.Oracle数据库

linux 定制任务计划后/var/spool/clientmqueue目录下内容处理

在linux系统中,我们经常会用crontab来定制任务计划,然而每次执行的时候会产生一个信息发送到/var/spool/clientmqueue/,这些东西一般没什么用,还占用磁盘空间,需要删除 由于可能执行的时间太久,文件可能过大,用rm -f *来删除时会提示(-bash: /bin/rm: Argument list too long) 所以用这个命令来操作: ls |xargs rm -f * 为了以后不将这些无用的信息输出到这个目录,可以在执行任务计划的时候,将其指定到黑洞,命令如下

利用Linux中的计划任务+PHP网页程序(转)

利用Linux中的计划任务+PHP网页程序,实现对web服务器运行状况的监测[每5分钟监测一次,并邮件提醒]一.我的监测服务器环境:rhel5.5+apache2.2+php5二.功能描述:写一个PHP页面,实现如下功能:请求要监控的WEB服务器的某一个页面的内容,如果返回不到数据,或者返回的数据里没有包含我期望的代码[用于自定义错误页面时的情况],那我就认为WEB服务出问题了[宕机或者遭到内容改写攻击],然后就发送一个邮件出来,这个邮件可以和手机进行绑定[139邮箱可以做到]而我在计划任务里去

linux下任务计划详解

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

linux crontab 定时任务计划

crontab [-u username] [-l|-e|-r] 参数: -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度; -e: 编辑crontab 的工作内容; -l: 查阅crontab的工作内容; -r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑. 范例一:用dmtsai的身份在每天的12:00发信给自己 crontab -e #此时会进入vi的编辑界面让你编辑工作.注意到,每项工作都是一行. 0    12   *   *

Linux进程和计划任务

内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序. 安全功能等 进程管理: 系统优先级:数字越小,优先级越高    实时优先级: 99-0,值最大优先级最高    nice值:-20 到19 ,对应系统优先级100-139或99 Linux 内核:抢占式多任务          进程类型:                     守护进程: daemon, 在系统引导过程中启动的进程,和终端无关进程                     前台进程:跟终端相关,通过终端启动的进程 

[笔记] linux中的计划任务crontab

不能拒绝进步 cron来源于希腊单词chronos(意为"时间"),指linux系统下一个自动执行指定任务的程序(计划任务). 1--crontab 的命令选项 #crontab -u <-l, -r, -e> -u指定一个用户 -l列出某个用户的任务计划 -r删除某个用户的任务 -e编辑某个用户的任务 .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas,