linux任務自動化 初步接觸crontab和at

來源:互聯網
上載者:User

linux實現任務自動化大體可以分兩類,系統初始化時運行和定時運行。對於定時運行linux內建了兩種工具,crontab和at。

關於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中設定,能不能生效就需要自己嘗試了。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.