Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4842274
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: LINUX

2008-08-18 11:10:14

  1.crontab
   1.1 启动服务
     first也是最重要的就是启动crontab服务了哦^_^俺的系统是ubuntu,crontab在ubuntu下的服务名词为cron.可以使用脚本
     ls /etc/rc$(runlevel|sed 's/N.//').d|awk '!/K/ {print}'|sed 's/S[0-9][0-9]//'
   当然你也可以在上面脚本后面加个 | grep cron直接参看crontab服务是否已经启动了,没有启动的话,那就启动crontab服务啥^_^,
     sudo /etc/init.d/cron start(ps:你也可以使用这条命令参看cron服务是否启动了,如果已经启动会提示服务已启动的,当然一般情况下cron服务都是随系统启动的,你可以sudo sysv-rc-conf设置开机启动的服务,sysv-rc-conf如何install google or baidu it)
    1.2 crontab语法
     这个一般man crontab就可以了^_^
      
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
       crontab -l //列出某个用户cron服务的详细内容
       crontab -r //删除某个用户的cron服务
       crontab -e //编辑某个用户的cron服务
   比如说root查看自己的cron设置:crontab -u root -l
   再例如,root想删除fred的cron设置:crontab -u fred -r
   在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
   进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
   这 个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以 了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
      分钟 (0-59) 小時 (0-23) 日期 (1-31) 月份 (1-12) 星期 (0-6)//0代表星期天
   除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字.
    1.3 example
   30 21 * * * /usr/local/etc/rc.d/apache2 restart表示每晚的21:30重启apache2
   45 4 1,10,22 * * /usr/local/etc/rc.d/apache2 restart每月1、10、22日的4 : 45重启apache2
  10 1 * * 6,0 /usr/local/etc/rc.d/apache2 restart表示每周六、周日的1 : 10重启apache2

2. linux at 命令详解
   首先也是man at了哦^_^
   使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
   说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程序或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime.
   如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks.
   另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter后,at 会进入交谈模式并要求输入指令或程序,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。
参数 :
   -V : 印出版本编号
   -q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
   -m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
   -f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
   -l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
   -d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
   -v : 列出所有已经完成但尚未删除的指定
例子 :
  三天后的下午 5 点锺执行 /bin/ls :
    at 5pm + 3 days /bin/ls
  三个星期后的下午 5 点锺执行 /bin/ls :
    at 5pm + 3 weeks /bin/ls
  明天的 17:20 执行 /bin/date :
    at 17:20 tomorrow /bin/date
  2008年的最后一天的最后一分钟印出 the end of world !
    at 23:59 12/31/2008 echo the end of world !
  ps:at指令不能在shell中直接输入
    # at 2:05 tomorrow(指定时间)

        at> /home/mj/airplane > /home/mj/air-safe(具体command)

        at> Ctrl+D(表示文本输入结束,不是Ctrl+C哦)


3. summary
   其实不用总结大家自己也可以看出来,写论文写惯了,这里就再废话下,crontab的命令灵活些可以重复执行多次,而at的就one time了哦...
阅读(1011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~