现在的位置: 首页 > 综合 > 正文

linux任务自动化 初步接触crontab和at

2012年09月09日 ⁄ 综合 ⁄ 共 920字 ⁄ 字号 评论关闭

linux实现任务自动化大体可以分两类,系统初始化时运行和定时运行。对于定时运行linux自带了两种工具,crontabat

关于crontab的介绍,有两篇比较靠谱的文章:计划任务工具 cron 的配置和说明linux下实行计划任务

at的介绍相对较少,稍微说下:

  1. 使用at.allow和at.deny进行访问控制,/etc/at.allow包括被授权访问的用户,/etc/at.deny包括不可使用at的用户。如果两个文件都不存在,只有超级用户可以使用。默认的at.deny是空白状态,也就是允许所有用户。
  2. 如何指定运行时间,很灵活,举几个简单的例子。
    at now                   立即运行
    at now 
    + 2 minutes       2分钟后运行
    at 
    16:00                 当天下午4点运行
    at 
    16:00                 明天下午4点
  3. 提交任务的方式两种。
    // 指定文件提交
    $ at -f /root/bin/runme now + 5 hours

    // 标准输入提交
    $ at 23:40
    at
    > cd /tmp/perl
    at
    > make
    at
    > ls -al > tmp.log
    at
    > <Ctrl-d>

  4. 查看任务atq和at -l等效,删除任务at -d 任务序号。

碰到的问题,如果计划任务启动的脚本需要java环境支持:

  1. 可以在/etc/profile中设置JAVA_HOME等变量,这个脚本是全局的,在系统启动时会完全加载,/etc/bashrc优先级较低,JAVA_HOME设置在这对计划任务不起作用,因为crontab的运行是不需要console的。
  2. 可以在任务脚本中重新设置,前提你在/etc/bashrc中设置了环境变量。
    $ source /etc/bashrc
  3. 计划任务需要界面支持的话,需要配置DISPLAY变量,附带一句废话,注意大小写。
    $ export DISPLAY=:1.0

    两种方式得到当前DISPLAY
    $ echo $DISPLAY
    $ printenv | fgrep DISPLAY
  4. 以上的环境变量应该都可在/etc/crontab中设置,能不能生效就需要自己尝试了。

抱歉!评论已关闭.