2014年5月19日 星期一

[Linux] 透過 AWK 和 HOSTNAME 資訊執行 Sleep 指令 @ Ubuntu 14.04

最近開始埋一些 crontab 任務到各台機器,但是,有些指令是對 DB 動作的,而通常擺在 crontab 的 DB 指令是為了建出一些 snapshot 且多為 slow query 的,那如果多台機器全部都同時發送 DB query 時,反而又累到了 DB 系統。

這時候想到的方式就是搭配 sleep 的方式,並透過每檯機器的資訊避開一同發送要求,用法就想到 hostname 了:

$ awk '{s=0;for(i=1;i<=length($0);i++){c=sprintf("%c",substr($0,i,1));s+=c ;}; system( "sleep " s); }' /etc/hostname 

最後,在 crontab 上,就可以在待執行指令前面,先安插上述的 script 來跑,如:
  # m h dom mon dow command
*/10 * * * * sh /path/sleep.sh ; /path/job_exec

沒有留言:

張貼留言