Linux学习之例行性工作
来源:互联网 发布:达内软件培训班 编辑:程序博客网 时间:2024/05/22 02:08
例行性工作就是周期执行的一些工作,比如定期发邮件等等。在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命令的示例:
[root@MyCentos buptlsl]# at 23:00 2014-03-23at> /bin/syncat> /bin/syncat> /sbin/shutdown -h nowat> <EOT>
我们使用at时会进入一个at shell的环境来让用户执行工作命令,此时最好使用绝对路径来执行你的命令。完成命令输入后按下Ctrl+d结束,会有一个<EOT>符号。
我们使用atq来查询at工作调度:
[root@MyCentos buptlsl]# atq2 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~590~231~311~120~7命令
周的数字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/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# 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 41 ** root run-parts/etc/cron.monthly//每个月去执行一遍/etc/cron.monthly内的脚本
时间字段和命令字段之间有一个身份字段,表示执行命令的用户身份,此处为root
- Linux学习之例行性工作
- Linux学习笔记之:例行性工作
- linux之例行性工作排程:crontab学习
- linux例行性工作
- Linux:例行性工作
- linux例行工作之crontab
- Linux学习-例行性工作:单一工作指令at
- linux例行性工作调度
- Linux例行性工作调度
- 学习文件格式化处理、linux例行性工作
- linux学习笔记:例行性工作(crontab)
- Linux下例行性工作自结
- Linux 上常见的例行性工作
- linux例行性工作 crontab详解
- Linux例行性工作(at/cron)
- Linux -- 例行性工作排程
- linux下的例行性工作
- Linux例行性工作调度cron
- php的过滤函数
- 三角形类
- 怎样根据结构成员的地址找到结构体的地址(list_entry)
- python web框架 - Django
- hdu 2544 最短路
- Linux学习之例行性工作
- onItemSeleted 获得当前position对应的item内容
- Re: What is an endpoint?
- android生命周期(详细总结)
- 新浪微博接口自动生成+Qt封装
- 皮尔逊积矩相关系数的学习
- 亲密关系恐惧症
- python中单,双引号和三个双引号的区别
- Python IDLE快捷键