請選擇 進入手機版 | 繼續訪問電腦版
搜索
熱搜: 活動 交友 discuz
查看: 3607|回復: 0

[Linux] Linux cron jobs crontab 排程使用教學 - 例行性工作排程(crontab)

[複製鏈接]
發表於 2014-5-15 11:43:52 | 顯示全部樓層 |閱讀模式
這篇我會放在這還是因為以PHP為出發點,相信PO在這會有幫助。

原文:cron jobs crontab 排程教學



在linux系統中,如 freebsd,cron 排程的資料是存在/etc/crontab中,我們可以直接輸入 vi /etc/crontab進行編輯。

Linux Cron 指令

  • crontab -e 編輯排程 (edit cron)
  • crontab -r  移除排程 (remove cron)
  • crontab -l  顯示目前排程 (list cron)crontab -u 改變排程的執行身分: crontab -u user filename

Cron 語法介紹


分鐘
小時


星期
執行身份
指令
0~59
0~23
1~31 (29,30)
1~12
0~6
0是星期日,6是星期六
帳號
/usr/bin/xxxx

Cron 範例 ( Example )

每5分鐘執行一次

 */5 * * * *  root    /usr/libexec/atrun

每5小時執行一次

 * */5 * * * root    /usr/libexec/atrun

1至20號每天執行一次

0 1 1-20  * * root    /usr/libexec/atrun

當分針移到第5分時,執行此 cron

 5 * * * * root    /usr/libexec/atrun

當時針移到1點 1 分時,執行此 cron

1 1 * * * root    /usr/libexec/atrun

每週一的1點1分,執行

1 1 * * 1 root    /usr/libexec/atrun

2月29日時針到1點1分,執行 

1 1 29 2 * root    /usr/libexec/atrun

8點到16點每5分鐘執行一次 cron

 */5 8-16 * * *   root    /usr/libexec/atrun

Redirect Output

需要做轉導輸出時加至後方,範例為輸出至空(/dev/null):

*/5 8-16 * * * root /usr/libexec/atrun > /dev/null

start cron

在 Linux 中,有個程式叫 crond ,意思是 cron daemon,大部分的 Linux 系統都會自動背景啟開這個程式,但是有時候會碰到 cron 沒有啟動的狀態,啟動方式如下:

sudo service crond start

啟動之後,我會使用 tail -f /var/log/cron 這個指令來檢查 /etc/crontab 中的程式,是否有正確的被執行。

如何讓 cron job 自動 SCP 備份資料

首先我們要啟用 SSH Agent,有了 SSH Agent ,就能夠執行 scp 指令,並且自動通過輸入密碼的過程。

先在個人目錄下新增 .bash_profile ,並加入以下的內容,加入完成後得重新載入 .bash_profile , 使用指令「source ~/.bash_profile」,之後我們就可以用 start_agent 啟動 SSH Agent。

.bash_profile
  1. SSH_ENV=$HOME/.ssh/environment
  2. function start_agent {
  3. echo "Initialising new SSH agent..."
  4. /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
  5. echo succeeded
  6. chmod 600 ${SSH_ENV}
  7. . ${SSH_ENV} > /dev/null
  8. ssh-add id_rsa
  9. }

接下來修改 /etc/crontab ,將備份的指令輸入就可以了,如果想看執行的 Log ,可以在指令的最後補上 「 2>&1 > ~/cronLog」,這樣程式就會將結果存到 ~/cronLog。

/etc/crontab auto scp
  1. 1 1 * * * userxx . /home/userxx/.ssh/environment && /usr/bin/scp puritys.me:~/var/backup/* ~/
  2.  

這個範例是每天自動備份另一台機器的資料,但是時間一久 ,備份的資料會越來越多,最後硬碟會撐不住,所以又要加一個自動刪除舊檔的 cron job,下面這個範例會自動刪除五天前的 gz 備份檔。

/etc/crontab auto rm
  1. 40 1 * * * userxx /usr/bin/rm `date --date="-5 day" +"\%Y-\%m-\%d"`*.gz
  2.  

This post was refered by 

[Linux] Crontab 排程使用教學 - 參數速查
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2020-9-25 13:35 , Processed in 0.074501 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表