本次來說說Linux crontab定時任務來執行shell腳本文件,以及怎麼通過shell腳本來執行sql語句; 其實crontab跟spring quartz定時任務是差不多的意思,在我看來是完全一樣的; 像這種適合的場景,一般用於簡單的對數據進行操作,適合沒有複雜邏輯的操作,比如本次因為活動需 ...
本次來說說Linux crontab定時任務來執行shell腳本文件,以及怎麼通過shell腳本來執行sql語句;
其實crontab跟spring quartz定時任務是差不多的意思,在我看來是完全一樣的;
像這種適合的場景,一般用於簡單的對數據進行操作,適合沒有複雜邏輯的操作,比如本次因為活動需要將某個商品的價格調為活動價,像這種邏輯不是很複雜的,能通過簡單的sql就
能完成的就非常適合用這個定時任務了,>>
如圖本次因為活動需要將原價4388元的ipad價格調為活動價4200,但必須要在10月1號生效,在10月1號之前保持原價,
下麵實現需求:
1.首先本次操作的文件在伺服器的目錄為/home/she/下,首先在she文件夾下新建文件shu.sh文件,內容為(這裡需要會一點shell語言功底):
#!/bin/sh
user=bizme
pass=www123*
db=qianzhao
tablename=ecshop_items
mysql -u$user -p$pass -D $db -e "UPDATE ecshop_items SET price=4200 WHERE id='106U9FQUM4C1Q_12_21';"
根據上圖根據自己的資料庫來調整響應的參數,參數意思都標清除了,每個欄位都標的很清楚了的,
還有另外一種寫法是將sql語句單獨寫到一個文件中然後執行執行響應的.sql文件,具體是:
#!/bin/sh user=bizme pass=www123* db=qianzhao tablename=ecshop_items mysql -u$user -p$pass -D $db < /home/she/city.sql
然後在/home/she文件加下新建一個city.sql文件內容就是上面需要執行的sql:
UPDATE ecshop_items SET price=4200 WHERE id='106U9FQUM4C1Q_12_21';
好了,文件都建好了之後現在需要改下許可權不然無法執行的,將剛剛新建的.sh腳本文件改下許可權,命令為:chmod 744 shu.sh
如果使用的是標準的linux色彩視圖的話會看到文件顏色會變為綠色的:
好了,最後就是新建一個定時任務了:命令:crontab -e
新建一行:0 0 1 10 * /home/she/shu.sh 意思為10月1日0點執行:
這個時間設置有點類似於quartz的時間設置,但又不完全相同: 依次為:分鐘,小時,日,月,星期,
編輯好了之後以:wq方式保存,跟vim編輯器保存方式相同.
最後上結果:
成功執行了,根據自己的業務邏輯調整sql其實很多定時任務都可以以這種方式來完成.
完!!!