Chinaunix首页 | 论坛 | 博客
  • 博客访问: 547713
  • 博文数量: 128
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 1345
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-22 21:43
文章分类

全部博文(128)

文章存档

2009年(30)

2008年(98)

我的朋友

分类:

2008-04-23 13:18:24

cron 是系统主要的调度进程,可以在无需人工干预的情况下运行作业。
crontab 的命令允许用户提交、编辑或删除相应的作业。
系统管理员通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自已的crontab文件
/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。

crontab文件中各个域的意义和格式
第一列  分钟1~59
第二列  小时1~23(0表示子夜)
第三列  日1~31
第4列  月1~12
第5列  星期0~6(0表示星期天)
第6列  要运行的命令
crontab的格式:
分 时 日 月 星期 要运行的命令
在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1-5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1,4来表示。可以用星号*来表示连续的时间段。如果你对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。
crontab文件条目例子:
表示每晚的12:30运行/apps/bin目录下的cleanup.sh
30 21 * * * /apps/bin/cleanup.sh
表示每月1、10、22日的4:45运行/apps/bin目录下的backup.sh
45 4 1,10,22 * * /apps/bin/backup.sh
每周六、周日的1:10运行一个find命令
10 1 * * * 6,0 /bin/find -name "core" -exec rm {} \;
每个命令都需要绝对路径。当使用crontab运行shell脚本时,要由用户来给出脚本
crontab命令选项
crontab命令的一般形式为:
Crontab [-u user] -e -l -r
其中:
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。
如果使用自己的名字登录,就不用使用-u选项,因为在执行crontab命令时,该命令能够知道当前的用户。
创建一个新的crontab文件
在向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。编辑$HOME目录下的.profile文件,在其中加入这样一行:
EDITOR=vi; export EDITOR 保存退出
创建一个名为cron的文件,其中是用户名,例如peizfcron。在该文件中放入如下内容:
# (put your own initials here) echo the date to the console every
# 15 minutes between 6pm and 6am
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
提交刚创建的crontab文件
$ crontab peizfcron
同时新创建的一个副本已经被放入/var/spool/cron目录中,文件名就是用户名,即peizf
列出crontab文件:
$ crontab -l
对$HOME目录中对crontab文件做一备份:
$ crontab -l > $HOME/peizfcron
编辑crontab文件
$ crontab -e
删除crontab文件
$ crontab -r
FILES
     /etc/cron.d                     Main cron directory
     /etc/cron.d/FIFO                Lock file
     /etc/default/cron               cron default settings file
     /var/cron/log                   cron history information
     /var/spool/cron                 Spool area
     /etc/cron.d/queuedefs           Queue description file for
                                     at, batch, and cron
     /etc/logadm.conf                Configuration file for logadm

at命令
at命令的基本形式为:
at [-f script] [-m -l -r] [time] [date]
其中,
-f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。atq命令具有相同的作用。
-r 清除作业。为了清除某个作业,还要提供相应的作业标识(ID);有些UNIX变体只接受atrm作为清除命令。
-m 作业完成后给用户发邮件。
time at命令的时间格式非常灵活;可以是H、HH.HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。还可以使用a.m.或p.m.。
date 日期格式可以是月份数或日期数,而且at命令还能够识别诸如today、tomorrow这样的词。
若提交若干行命令,可以在at命令后面跟上日期/时间并回车。然后就进入了at命令提示符,输入相应命令,按CTRL-D退出。
$ at 21:10
at>find / -name "passwd" -print
>at
该命令在完成以后结果以邮件形式发送给我
下面这些日期/时间格式都是at命令可以接受的
At 6.45am May12
At 11.10pm
At now + 1 hour
At 9am tomorrow
At 15:00 May 24
At now + 10 minutes
如果希望向at命令提交一个shell脚本,使用命令行方式即可。在提交脚本时使用-f选项
$at 3.00pm tomorrow -f /apps/bin/db_table.sh
列出所有作业
at -l
当提交一个作业后,它就被拷贝到/var/spool/at目录中,准备在要求的时间运行。
清除作业
首先执行at -l 命令,然后
$atrm job n 或$atrm at名称

&命令后台运行某个作业
后台运行的作业产生的大量输出,把输出重定向到某个文件中:
command >out.file 2>&1 &
eg:
运行一个find命令,查找名为"srm.conf"的文件,并把所有标准输出和错误输出重定向到find.dt的文件中:
$ find /etc -name "srm.conf" -print >find.dt 2>&1 &
ps查看进程
$ ps x|grep 28305
如果系统不支持ps x,可以用
$ ps -ef |grep 28305
杀死进程kill
如果系统没有告诉你进行被杀死,可以再执行一个kill命令,带信号选项
$ kill -9 28305
nohup命令
在退出帐户时继续运行相应的进程,如果使用nohup命令提交作业,缺省情况下作业输出到nohup.out文件中,除非另外指定输出文件:
nohup command > myout.file 2>&1
如果希望一次提交几个命令,把它们写入一上shell脚本文件中,并用nohup命令执行。
把所有命令用管道符号连接在一起;存入一个文件,并使该文件可执行
cat /home/accounts/qtr_0499 | /apps/bin/trails.awk |sort|lp
$ cat > quarterend
$ chmod 744 quarterend
$ nohup ./quarterend > qtr.out 2>&1 &
阅读(1500) | 评论(0) | 转发(0) |
0

上一篇:文件名置换

下一篇:chmod

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