Linux学习之例行性工作
2014-03-23 20:11
169 查看
例行性工作就是周期执行的一些工作,比如定期发邮件等等。在Linux中,例行性工作是通过crontab和at进行调度的,所谓调度就是将这些工作安排执行的流程。
在Linux中有两种工作调度的方式:一种是例行性的,每隔一定的周期执行一次,用crontab来处理;另一种就是突发性的,执行完之后就没了,用at来处理。
一 仅执行一次的工作调度
单一工作调度的运作,使用at命令来运行。
at命令使用atd服务,atd的启用方法是:/etc/init.d/atd restart,要设置成开机启动,就使用 chkconfig atd on
at的运行方式:我们使用at这个命令来生成所要运行的工作,并将这个工作以文本文件的方式写入/var/spool/at目录内,该工作便能等待atd这个服务的取用与执行了。并非所有用户都可以进行at调度,/etc/at.allow和/etc/at.deny决定了允许或者禁止那些用户可以进行at调度。
atq命令查看目前主机上有多少个at工作调度;atrm [jobnumber]删除工作号为jobnumber的工作调度。
--------------------------------------------------------------------------------------------------------------------------------------------------
at命令的示例:
我们使用at时会进入一个at shell的环境来让用户执行工作命令,此时最好使用绝对路径来执行你的命令。完成命令输入后按下Ctrl+d结束,会有一个<EOT>符号。
我们使用atq来查询at工作调度:
输出信息意为在2014/3/23的23:00有一项工作,执行者为root,而且该项工作的jobnumber为2.
然后,我们可以使用命令atrm [jobnumber]来删除这个at工作调度
--------------------------------------------------------------------------------------------------------------
二 例行性工作调度
crontab语法:
crontab [-u username] [-l|-e|-r]
-u:只有root用户才能执行,帮助其他用户新建/删除crontab工作调度
-e:编辑crontab的工作内容
-l:查询crontab的工作内容
-r:删除所有crontab的工作内容,如果想仅删除一项,请使用-e去编辑
同样的,/etc/cron.allow和/etc/cron.deny允许和禁止那些用户使用crontab进行工作调度。
当用户使用crontab这个命令来新建工作调度之后,该项工作就被记录到/var/spool/cron/里面,而且是以帐号来命名。cron执行的每一项工作都会被记录到/var/log/cron这个日志文件里面。
crontab -e回车后会进入vim界面,你就可以编辑自己的例行性工作调度了,每项工作都是一行,例如:
0 12 * * * mail buptlsl -s "at 12:00" < /home/buptlsl/.bashrc
#分 时 日 月 周
这个例子表示每天的12点给buptlsl发一封邮件,邮件标题为at 12:00,邮件内容读取自文件/home/buptlsl/.bashrc
每项工作的格式都具有六个字段,每个字段之间都有空格,各字段意义如下:
周的数字0或7都代表周日。
/n表示每隔n个时间单位间隔执行一次,例如每5分钟执行一次即为:*/5 * * * * command也可以写成0-59/5
*表示任何时刻都接受的意思
,逗号表示分隔时间段的意思,如果执行命令的时刻为3时或6时,则为* 3,6 * * * command
-表示一段时间范围,例如8点到12点,用8-12表示
-------------------------------------------------------------------------------------------------------------------------------------------------------------
三 系统的配置文件:/etc/crontab、
前面的crontab -e 是针对用户的cron设计的,而系统的例行性工作都在/etc/crontab这个文件中,只需要编辑这个文件就可以修改系统的例行性工作了。crond服务会每分钟去读取一次/etc/crontab文件和/var/spool/文件夹里面的内容。
需要区别的是,crontab -e这个crontab其实是/usr/bin/crontab这个执行文件,但是/etc/cronab是一个纯文本文件。
例如:
01
* *
* * root run-parts
/etc/cron.hourly
//每个小时去执行一遍/etc/cron.hourly内的脚本
02 4
* *
* root run-parts
/etc/cron.daily
//每天去执行一遍/etc/cron.daily内的脚本
22 4
* *
0 root run-parts
/etc/cron.weekly
//每星期去执行一遍/etc/cron.weekly内的脚本
42 4
1 *
* root run-parts
/etc/cron.monthly
//每个月去执行一遍/etc/cron.monthly内的脚本
时间字段和命令字段之间有一个身份字段,表示执行命令的用户身份,此处为root
在Linux中有两种工作调度的方式:一种是例行性的,每隔一定的周期执行一次,用crontab来处理;另一种就是突发性的,执行完之后就没了,用at来处理。
一 仅执行一次的工作调度
单一工作调度的运作,使用at命令来运行。
at命令使用atd服务,atd的启用方法是:/etc/init.d/atd restart,要设置成开机启动,就使用 chkconfig atd on
at的运行方式:我们使用at这个命令来生成所要运行的工作,并将这个工作以文本文件的方式写入/var/spool/at目录内,该工作便能等待atd这个服务的取用与执行了。并非所有用户都可以进行at调度,/etc/at.allow和/etc/at.deny决定了允许或者禁止那些用户可以进行at调度。
atq命令查看目前主机上有多少个at工作调度;atrm [jobnumber]删除工作号为jobnumber的工作调度。
--------------------------------------------------------------------------------------------------------------------------------------------------
at命令的示例:
[root@MyCentos buptlsl]# at 23:00 2014-03-23 at> /bin/sync at> /bin/sync at> /sbin/shutdown -h now at> <EOT>
我们使用at时会进入一个at shell的环境来让用户执行工作命令,此时最好使用绝对路径来执行你的命令。完成命令输入后按下Ctrl+d结束,会有一个<EOT>符号。
我们使用atq来查询at工作调度:
[root@MyCentos buptlsl]# atq 2 2014-03-23 23:00 a root
输出信息意为在2014/3/23的23:00有一项工作,执行者为root,而且该项工作的jobnumber为2.
然后,我们可以使用命令atrm [jobnumber]来删除这个at工作调度
[root@MyCentos buptlsl]# atrm 2 [root@MyCentos buptlsl]# atq [root@MyCentos buptlsl]#再使用atq查询,没有任何输出,说明调度已被删除。
--------------------------------------------------------------------------------------------------------------
二 例行性工作调度
crontab语法:
crontab [-u username] [-l|-e|-r]
-u:只有root用户才能执行,帮助其他用户新建/删除crontab工作调度
-e:编辑crontab的工作内容
-l:查询crontab的工作内容
-r:删除所有crontab的工作内容,如果想仅删除一项,请使用-e去编辑
同样的,/etc/cron.allow和/etc/cron.deny允许和禁止那些用户使用crontab进行工作调度。
当用户使用crontab这个命令来新建工作调度之后,该项工作就被记录到/var/spool/cron/里面,而且是以帐号来命名。cron执行的每一项工作都会被记录到/var/log/cron这个日志文件里面。
crontab -e回车后会进入vim界面,你就可以编辑自己的例行性工作调度了,每项工作都是一行,例如:
0 12 * * * mail buptlsl -s "at 12:00" < /home/buptlsl/.bashrc
#分 时 日 月 周
这个例子表示每天的12点给buptlsl发一封邮件,邮件标题为at 12:00,邮件内容读取自文件/home/buptlsl/.bashrc
每项工作的格式都具有六个字段,每个字段之间都有空格,各字段意义如下:
代表意义 | 分钟 | 小时 | 日 | 月份 | 周 | 命令 |
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 命令 |
/n表示每隔n个时间单位间隔执行一次,例如每5分钟执行一次即为:*/5 * * * * command也可以写成0-59/5
*表示任何时刻都接受的意思
,逗号表示分隔时间段的意思,如果执行命令的时刻为3时或6时,则为* 3,6 * * * command
-表示一段时间范围,例如8点到12点,用8-12表示
-------------------------------------------------------------------------------------------------------------------------------------------------------------
三 系统的配置文件:/etc/crontab、
前面的crontab -e 是针对用户的cron设计的,而系统的例行性工作都在/etc/crontab这个文件中,只需要编辑这个文件就可以修改系统的例行性工作了。crond服务会每分钟去读取一次/etc/crontab文件和/var/spool/文件夹里面的内容。
需要区别的是,crontab -e这个crontab其实是/usr/bin/crontab这个执行文件,但是/etc/cronab是一个纯文本文件。
[root@MyCentos buptlsl]# cat /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 # | | | | | # * * * * * command to be executedMAILTO=root表示当例行性命令有错误或者有输出结果时,会将信息传给root,这个地方可以改成你自己的邮箱,例如:haha@gmail.com
例如:
01
* *
* * root run-parts
/etc/cron.hourly
//每个小时去执行一遍/etc/cron.hourly内的脚本
02 4
* *
* root run-parts
/etc/cron.daily
//每天去执行一遍/etc/cron.daily内的脚本
22 4
* *
0 root run-parts
/etc/cron.weekly
//每星期去执行一遍/etc/cron.weekly内的脚本
42 4
1 *
* root run-parts
/etc/cron.monthly
//每个月去执行一遍/etc/cron.monthly内的脚本
时间字段和命令字段之间有一个身份字段,表示执行命令的用户身份,此处为root
相关文章推荐
- linux学习笔记:例行性工作(crontab)
- Linux 学习笔记 -- 第四部分 Linux 使用着管理 -- 第16章 例行性工作 (crontab)
- linux例行性工作调度学习(一)
- Linux学习笔记之:例行性工作
- linux之例行性工作排程:crontab学习
- linux 下学习C语言的前期工作
- Linux第一周学习总结——计算机是如何工作的
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】中断服务下半部之工作队列详解
- Linux 循环执行的例行性工作调度 crond
- Note For Linux By Jes(10)- 例行性工作排程 (crontab)
- linux例行性工作调度
- 工作学习之---linux
- Linux 学习(二)--- 域名服务的工作流程
- Linux学习-例行性工作:单一工作指令at
- linux例行性工作排程
- 鳥哥的 Linux 私房菜 -- 例行性工作排程的建立 cron,郁闷一下午
- Linux学习总结(31)——工作中常用的Linux脚本和命令
- [学习笔记]Linux工作管理
- LFS-Linux From Scratch学习笔记——简介与准备工作
- 鸟哥的linux私房菜学习记录之例行性工作