Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210551
  • 博文数量: 55
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1126
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-22 15:15
个人简介

积累经验

文章分类

全部博文(55)

文章存档

2014年(55)

分类: LINUX

2014-01-27 14:52:26

一:at命令(一次性计划任务)

 1. at命令:在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart; 开机即启动则需要运行chkconfig --level 2345 atd on)。
[root @ localhost test]at now +1 min
at> echo "hello" > /dev/tty2后回车 # 一分钟后发送“hello”给tty2终端
--注意: 使用ctrl+d来终结字符输入(即

at 00:55 2014-1-13
at> echo "test at command" > /home/test.txt 
at 1:00 2014-1-13
at>/sbin/shutdown -h now #此处使用绝对路径

2.at 命令创建的任务会放在/var/spool/at下面, 是一个脚本文件,可以用vi进行编辑。
 
atq指令:查询当前机器上有哪些等待执行的任务, 其第一列为工作号。
atrm指令:取消任务, eg: atrm 10 #其中10为工作号。
batch指令:以一个较低优先级延时执行任务。
batch
at> echo "hello" > /home/abc.txt
 
3.at命令的安全控制
  /etc/at.allow #列出可以使用at命令的用户, 
  /etc/at.deny #列出不可以使用at命令的用户, 一行一个用户。

若既无at.allow文件,也无at.deny文件,则只有root用户才能执行at命令
 

二:cron服务

1、cron服务介绍
       cron把命令行保存在/etc/crontab文件里,每个系统用户如果设置了自己的cron,那都会在/var/spool/cron下面有对应用户名的crontab。无论编写/var/spool/cron目录内的文件还是/etc/crontab文件,都能让cron准确无误地执行安排的任务,区别是/var/spool/cron下各系统用户的crontab文件是对应用户级别的的任务配置,而/var/crontab文件则是对应系统级别的任务配置。cron服务器每分钟读取一次/var/crontab/cron目录内的所有文件和/etc/crontab文件。

2、使用cron服务执行计划任务
 #service crond start/restart/stop
 启动/重启/关闭cron服务

 #crontab -l
 浏览当前用户的crontab,即浏览已存在的计划任务列表

 #crontab -e
 编辑当前用户crontab,如之前从未编辑过crontab文件,那么crontab是一个空白文件,我们可以完全手工编写我们所需要的计划任务列表,下面详细介绍计划任务列表的写法。


#/etc/anacrontab    系统的计划任务
#/etc/cron    计划任务实际执行文件
#/etc/cron.deny    存放禁止使用计划任务的用户
#/etc/cron.all    存放允许使用计划任务的用户


以下是几个例子: 

  1. 9 9 * * * /usr/local/bin/cvsb
  2. 3 3-6 * * 0 /usr/local/bin/qbbak
  3. * */6 * * * /usr/local/bin/esbbak
  4. 20,30 * * * /usr/local/bin/esbak


字段对应的含义如下:
  9         9        *        *        *
分钟   小时  日期    月份    星期
 

  1. 表示每天早上9点9分执行目录/usr/local/bin/中的cvsb文件
  2. 表示每周日凌晨3点到6点,03分执行目录/usr/local/bin中的qbbak文件
  3. 表示每6小时执行一次,执行时间从第一次执行起计算,当然也可以自定义执行时间,比如0 */6 * * *那程序就会在整点执行
  4. 表示在每小时20分和30分时执行


上面简单介绍了cron的一些基本用法,这个东东的时间组合可不是一般的强~可以复杂到你无法想象,我们只要掌握少许基本就可以满足日常需求了。

3、cron进阶使用

(1).避免cron产生垃圾文件

细心的朋友可能会发现系统/var/spool/clientmqueue/目录下往往存有大量文件,原因是系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail(系统自带的邮件服务器)没有启动所以就产生了这些文件。

这时可以使用输出重定向,即在计划任务后加上 &> /dev/null

例:

    9 9 * * * /usr/local/bin/cvsb &> /dev/null 

(&>:把错误重定向到输出要送到的地方。)
把命令的执行结果重定向到/dev/null,即把产生的错误抛弃。

      
(2).一种经常碰到的情况,需要执行的文件没问题,但通过cron就是死活不能正确执行,这时我们可以通过输出重定向将cron的执行过程输出到一个文件,通过分析执行过程来寻找错误的原因

例:
    
    9 9 * * * /usr/local/bin/cvsb > /var/log/crontab_log 2>&1

上例将cron的执行过程输出到一个文本文件crontab_log,这个文件可以随便手动建一个,放在哪都行,重定向目录写对就Ok


阅读(1206) | 评论(0) | 转发(0) |
0

上一篇:shell基础

下一篇:shell 简单语句

给主人留下些什么吧!~~