精品軟體與實用教程
蘋果cms定時任務如何使用Crontab指令設定定時任務自動更新
蘋果cms定時任務 蘋果cms的定時任務更新有幾種方式,如果是在Windows中搭建的蘋果cms,可以使用windows自帶的定時任務更新,如果是Linux的作業系統可以在第三方平台上設定定時更新的任務,或者在阿里雲,騰訊雲這種第三方網站上設定自定更新任務。以下介紹另一種方式,在Linux系統中使用crontab指令設定定時任務來自動更新網站。自動更新網站。
了解什麼是crontab 定時任務
透過crontab 指令,我們可以在固定的間隔時間執行指定的系統指令或shell script腳本。時間間隔的單位可以是分鐘、小時、日、月、週及以上的任意組合。這個指令非常適合週期性的日誌分析或資料備份等工作。
命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
命令參數
-u user:用來設定某個使用者的crontab服務;
file:file是指令檔的名字,表示將file做為crontab的任務清單檔案並載入crontab。如果在命令列中沒有指定這個文件,crontab指令將接受標準輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
-e:編輯某個使用者的crontab檔案內容。如果不指定用戶,則表示編輯目前用戶的crontab檔案。
-l:顯示某個用戶的crontab檔案內容,如果不指定用戶,則表示顯示目前用戶的crontab檔案內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則預設刪除目前用戶的crontab檔案。
-i:在刪除使用者的crontab檔案時給予確認提示。
crontab的檔案格式
分時日月星期要執行的指令
- 第1列分鐘0~59
- 第2列小時0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期日)
- 第6列要運行的命令
# .---------------- 分鐘,取值範圍為0-59 # | .------------- 小時,取值範圍為0-23 # | | .---------- 日,取值範圍為1-31 # | | | .------- 月,取值範圍為1-12 # 122 | | | | | | .-- 要執行的指令# | | | | | | 0 19 * * * bash /root/test.sh
蘋果cms定時任務
下面配置蘋果cms的定時任務,首先在蘋果cms的後台的系統選項中進行定時任務配置。
在需要自動更新的任務後面的操作選項中,在測試上點擊滑鼠右鍵,然後點擊複製連結地址獲取測試的URL位址。
例如:
https://xxx.com/api.php/timming/index.html?enforce=1&name=lz https://xxx.com/api.php/timming/index.html?enforce=1&name=sd https://xxx.com/api.php/timming/index.html?enforce=1&name=sd https://xxx.com/api.php/timming/index.html?enforce=1&name=xl https://xxx.com/api.php/timming/index。 https://xxx.com/api.php/timming/index.html?enforce=1&name=gs
這些url在瀏覽器中打開,需要是可以正常更新網站的有效連結。
接下來在Linux系統中設定定時任務。
安裝crontab
一般CentOS 會預設安裝了crontab,執行下面指令,查看是否安裝:
rpm -qa | grep crontab
如果查詢結果類似於下面,則說明已安裝:
如果結果為空,表示沒有安裝,請執行下方指令進行安裝即可:
dnf install -y crontabs
crontab 常用指令
查看crontab 運行狀態:
systemctl status crond
如上圖,如果顯示結果為Active: active (running) 表示運行中,Active: inactive (dead) 則表示未執行。
如果crontab 未執行,可以透過下方指令設定開機自啟動並啟動。
設定crontab 開機自動啟動:
systemctl enable crond
啟動crontab:
systemctl start crond
查看目前使用者的定時任務:
crontab -l
設定定時任務
首先在root目錄下建立一個vod.sh的腳本。
vi /root/vod.sh
按i 進入編輯狀態,貼上下面內容:
#! /bin/bash a=$(curl -k 'https://xxx.com/api.php/timming/index.html?enforce=1&name=lz') b=$(curl -k 'https://xxx.com/api.php/timming/index.html?enforce=1&name=sd'https://xxx.com/api.php/timming/index.html?enforce=1&name=47(curl) 'https://xxx.com/api.php/timming/index.html?enforce=1&name=xl') d=$(curl -k 'https://xxx.com/api.php/timming/index.html?enforce=1&name=kc') e=$(curl -k 'https://xxxmmm/api.php/Met. sleep 10 echo $b sleep 10 echo $c sleep 10 echo $d sleep 10 echo $e
按Esc 鍵,再輸入:wq 儲存檔案。
也可以使用下面的寫法,效果是一樣的。
#! /bin/bash func() { curl 'https://xxx.com/api.php/timming/index.html?enforce=1&name=gs' touch gs echo "gs打開完畢" } func & sleep 5 if [ -f gs ] then echo "gs" else echogs 成功" else echogs( 'https://xxx.com/api.php/timming/index.html?enforce=1&name=kc' touch kc echo "kc打開完成" } func & sleep 5 if [ -f kc ] then echo "kc成功" else echo "kc失敗" fi rm -ffunc sleep 10 furl 'https://xxx.com/api.php/timming/index.html?enforce=1&name=sd' touch sd echo "sd開啟後" } func & sleep 5 if [ -f sd ] then echo "sd成功" else echo "sd 'https://xxx.com/api.php/timming/index.html?enforce=1&name=xl' touch xl echo "xl打開完畢" } func & sleep 5 if [ -f xl ] then echo "xl成功" else echo "xl失敗" fi rm -f xl ] then echo "xl成功" else echo "xl失敗" fi rm -f xl sleep 10 func( sleep) 'https://xxx.com/api.php/timming/index.html?enforce=1&name=lz' touch lz echo "lz打開完畢" } func & sleep 10 if [ -f lz ] then echo "lz成功" else echo "lz失敗" fi rm -f lz ] then echo "lz成功" else echo "lz失敗" fi rm -f lz
sleep指令語法以下是Bash中sleep指令的語法:
sleep number[suffix]
可以使用正整數或小數作為時間值。後綴是可選部分。可以將以下任一項用作後綴:
- s - 表示秒
- m - 表示分鐘
- h - 表示小時
- d - 表示天
注意:如果沒有後綴,則數字以秒為單位(預設)。
如果指定了兩個或多個參數,則總的時間將被視為等於值總和的時間。以下是一些簡單的範例,示範如何使用sleep指令:
- 睡眠9秒鐘,使用:
sleep 9 或sleep 9s - 睡眠0.5秒鐘,使用:
sleep 0.5 或sleep 0.5s - 睡眠2分30秒,使用:
sleep 2m 30s - 睡眠8小時,使用:
sleep 8h - 睡眠2天9小時5分55秒,使用:
sleep 2d 9h 5m 55s
執行下面命令可以編輯目前使用者的定時任務:
crontab -e
執行完crontab -e 指令後,會開啟一個文檔,按i 進入編輯狀態。將下面內容貼在文件中。然後儲存退出!
0 19 * * * bash /root/vod.sh
上面這段程式碼的意思是,每天的19點,執行/root/vod.sh 腳本。
如果你想每個小時執行一次腳本,可以逐條加入。
注意:在定時任務的設定檔中,時間的24點,無法輸入24 ,要輸入0 ,否則會報錯!
例如:
0 1 * * * bash /root/vod.sh 0 2 * * * bash /root/vod.sh 0 3 * * * bash /root/vod.sh 0 4 * * * bash /root/vod.sh 0 5 * * * bash /root/vod * * bash /root/vod.sh 0 5 * * * bash /root/vod /root/vod.sh 0 8 * * * bash /root/vod.sh 0 9 * * * bash /root/vod.sh 0 10 * * * bash /root/vod.sh 0 11 * * * bash /root/vod.sh 0 12 *root 14 * * * bash /root/vod.sh 0 15 * * * bash /root/vod.sh 0 16 * * * bash /root/vod.sh 0 17 * * * bash /root/vod.sh 0 18 * * * bash /root/rootd /root/vod.sh 0 21 * * * bash /root/vod.sh 0 22 * * * bash /root/vod.sh 0 23 * * * bash /root/vod.sh 0 0 * * * bash /root/vod.sh
crontab 不執行的相關問題
- 檢查腳本路徑前是否新增了bash 或/etc/profile;/bin/sh
- 檢查crontab 服務是否正常
- 檢查腳本路徑是否絕對路徑
curl請求url裡含有&請求失敗
curl請求裡,url含有多個參數時,url需要使用單引號括起來,否則請求會被截斷,使用單引號將url的內容括起來就好了。
Ubuntu用命令列開啟網頁的三種方法
第一種方法links命令
apt install links links 'https://uzbox.com'
第二種方法w3m指令
apt install w3m w3m 'https://uzbox.com'
第三種方法lynx指令
apt install lynx lynx 'https://uzbox.com'