1. 程式人生 > 實用技巧 >Openwrt_Linux_crontab任務_順序執行指令碼

Openwrt_Linux_crontab任務_順序執行指令碼

Openwrt_Linux_crontab任務_順序執行指令碼

轉載註明來源: 本文連結 來自osnosn的部落格,寫於 2020-12-21.

Linux (openwrt,debian,centos...) 中 crontab 的任務太多,不想擠在一起同時執行

  • 可以考慮放到一個shell指令碼中順序執行。這樣,機器的負荷就不會在那些特定的時間點暴增。
    crontab 中 只需要加入一行*/5 * * * * /path.../my_tasks.sh,每5分鐘執行一次即可。
#!/bin/sh
# filename: my_tasks.sh

# current dir
MYTK=$(dirname $(readlink -f -- $0))
cd $MYTK

MIN="$(date '+%M')"       #min
MIN1="$(expr $MIN % 10)"  #min%10
#MIN2="$(expr $MIN / 10)"  #min/10
#HOUR="$(date '+%H')"      #hour

## run */10 min
if [ "$MIN1" -eq 0 ]; then
   ./mytask01.sh
   ./mytask02.sh
fi

## run */5 min
if [ "$MIN1" -eq 0 -o "$MIN1" -eq 5 ]; then
   ./mytask05.sh
fi

  • 如果使用 bash,可以用下面這個
#!/bin/bash

#當前目錄
MYTK=$(/usr/bin/dirname $(/bin/readlink -f -- $0))

MIN="$(date '+%M')"     # 獲取當前分鐘數
MIN2="$((10#$MIN/10))"  # 取十位, (這個操作僅bash支援)
MIN1="$((10#$MIN%10))"  # 取個位
HOUR="$(date '+%H')"    # 獲取當前小時數
...

---end---


轉載註明來源: 本文連結 來自osnosn的部落格.