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

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中设置,能不能生效就需要自己尝试了。

你可能感兴趣的:(crontab)