Linux 定時任務的配置


通常我們會需要定時啟動一些shell腳本,類似Windows中的Task Scheduler, 下面是在AWS EMR Cluster 主幾點上配置的步驟:

1. 先創建一個shell腳本,將需要執行的任務寫入腳本

  vi  testcron.sh

2. 修改該腳本的權限,添加執行權限:

  chmod a+x testcron.sh

3. 配置crontab, 創建執行任務的schedule:

  crontab -e

  * * * * * /tmp/testcron.sh         #每分鍾執行一次testcron.sh

4. 列出當前用戶的所有定時任務:

  crontab -l

5. 刪除當前用戶的所有定時任務:

  crontab -r

6. 也可以配置其他用戶:

  crontab -u username -e 

7. 看 /var/log/cron這個文件就可以,可以用tail -f /var/log/cron觀察

8. 利用 linux flock 鎖機制

  利用 flock(FreeBSD lockf,CentOS下為 flock),在腳本執行前先檢測能否獲取某個文件鎖,以防止腳本運行沖突。

  格式:

   flock [-sxun][-w #] fd#
   flock [-sxon][-w #] file [-c] command

  選項:

   -s, --shared:    獲得一個共享鎖
   -x, --exclusive: 獲得一個獨占鎖
   -u, --unlock:    移除一個鎖,腳本執行完會自動丟棄鎖
   -n, --nonblock:  如果沒有立即獲得鎖,直接失敗而不是等待
   -w, --timeout:   如果沒有立即獲得鎖,等待指定時間
   -o, --close:     在運行命令前關閉文件的描述符號。用於如果命令產生子進程時會不受鎖的管控
   -c, --command:   在shell中運行一個單獨的命令
   -h, --help       顯示幫助
   -V, --version:   顯示版本 

  鎖類型:

    共享鎖:多個進程可以使用同一把鎖,常被用作讀共享鎖
    獨占鎖:同時只允許一個進程使用,又稱排他鎖,寫鎖。

  這里我們需要同時只允許一個進程使用,所以使用獨占鎖。

修改后的定時任務如下:

 */1 * * * *  flock -xn /tmp/test.lock -c /tmp/testcron.sh  >> /tmp/testcron_result.log

為了測試這個功能,我在testcron.sh腳本里,添加了sleep命令

      sleep 10m      #等待10分鍾

  sleep 1h        #等待1小時

  sleep 10        #等待10秒鍾

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM