1. CELERY 定時任務
Celery是一個強大的分布式任務隊列,他可以讓任務的執行完全脫離主程序,甚至可以被分配到其他主機上運行。通常用來實現非同步任務和定時任務。非同步任務比如發送郵件,文件上傳圖像處理等;定時任務就是需要在特定時間執行的任務。
a. 創建Celery實例
b. 啟動Celery Worker,通過delay()或者apply_async()將任務發布到broker
c. 應用程序調用非同步任務
d. 存儲結果
Celery Beat: 任務調度器,Beat進程會讀取配置文件的內容,周期性的將配置中到期需要執行的任務發送給任務隊列
a. 創建Celery實例
b. 配置文件中配置任務,發送任務 celery -A xxx beat
c. 啟動Celery Worker celery -A xxx worker -l info -P eventlet
d. 存儲結果
如果大寫的話,需要寫成:
在celery_task同級目錄下,執行命令:
celery -A celery_task beat
在celery_task同級目錄下,執行命令:
celery -A celery_task worker -l info -P eventlet
可以看到輸出:
如果同時在<b>兩個虛擬環境(伺服器)</b>中都執行定時任務,都可以看到有以上LOG列印。
發布任務
celery -A celery_task beat
執行任務
celery -A celery_task worker -l info -P eventlet
將以上兩條合並
celery -B -A celery_task worker
後台啟動celery worker進程
celery multi start work_1 -A appcelery
停止worker進程,如果無法停止,加上-A
celery multi stop WORKNAME
重啟worker進程
celery multi restart WORKNAME
查看進程數
celery status -A celery_task
2. linux crontab怎麼定時執行任務
linux下定時執行任務的方法 【非原創,個人網上收集整理了一下】
在LINUX中,周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]。cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。
cron的配置文件稱為「crontab」,是「cron table」的簡寫。
一、cron在3個地方查找配置文件:
1、/var/spool/cron/ 這個目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名,比如tom建的crontab任務對應的文件就是/var/spool/cron/tom。
一般一個用戶最多隻有一個crontab文件。
二、/etc/crontab 這個文件負責安排由系統管理員制定的維護系統以及其他任務的crontab。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
三、/etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
四、許可權
crontab許可權問題到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果兩個文件都不存在,則只有root用戶才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件里的用戶才能使用crontab命令,如果root用戶也不在裡面,則root用戶也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,則只有列在cron.deny文件裡面的用戶不能使用crontab命令,其它用戶都能使用。
4、如果兩個文件都存在,則列在cron.allow文件中而且沒有列在cron.deny中的用戶可以使用crontab,如果兩個文件中都有同一個用戶,
以cron.allow文件裡面是否有該用戶為准,如果cron.allow中有該用戶,則可以使用crontab命令。
AIX 中 普通用戶默認都有 crontab 許可權,如果要限制用戶使用 crontab ,就需要編輯/var/adm/cron/cron.deny
HP-UNIX 中默認普通用戶沒得crontab 許可權 ,要想放開普通用戶的crontab 許可權可以編
五、創建cron腳本
第一步:寫cron腳本文件,命名為crontest.cron。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分鍾,執行列印一次命令
第二步:添加定時任務。執行命令 「crontab crontest.cron」。搞定
第三步:"crontab -l" 查看定時任務是否成功或者檢測/var/spool/cron下是否生成對應cron腳本
六、cron服務
cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
/sbin/service crond status //查看服務狀態
crontab用法
crontab命令用於安裝、刪除或者列出用於驅動cron後台進程的表格。用戶把需要執行的命令序列放到crontab文件中以獲得執行。
每個用戶都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接創建或者直接修改。該crontab文件是通過crontab命令創建的
在crontab文件中如何輸入需要執行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後一個域是要被執行的命令。
每個域之間使用空格或者製表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值范圍內的數字,"/"代表每的意思,"/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。
-l 在標准輸出上顯示當前的crontab。
-r 刪除當前的crontab文件。
-e 使用VISUAL或者EDITOR環境變數所指的編輯器編輯當前的crontab文件。當結束編輯離開時,編輯後的文件將自動安裝。
幾個例子:
每天早上6點
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因為cron把任何輸出都email到root的信箱了。
每兩個小時
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
晚上11點到早上8點之間每兩個小時和早上八點
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3 command line
1月1日早上4點
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號 HOME=/
每小時執行/etc/cron.hourly內的腳本
01 * * * * root run-parts /etc/cron.hourly
每天執行/etc/cron.daily內的腳本
02 4 * * * root run-parts /etc/cron.daily
每星期執行/etc/cron.weekly內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly
每月去執行/etc/cron.monthly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly
注意: "run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名。
每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執行命令。
5,15,25,35,45,55 16,17,18 * * * command
每周一,三,五的下午3:00系統進入維護狀態,重新啟動系統。
00 15 * * 1,3,5 shutdown -r +5
每小時的10分,40分執行用戶目錄下的innd/bbslin這個指令:
10,40 * * * * innd/bbslink
每小時的1分執行用戶目錄下的bin/account這個指令:
1 * * * * bin/account
每天早晨三點二十分執行用戶目錄下如下所示的兩個指令(每個指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)
每年的一月和四月,4號到9號的3點12分和3點55分執行/bin/rm -f expire.1st這個指令,並把結果添加在mm.txt這個文件之後(mm.txt文件位於用戶自己的目錄位置)。
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt
at命令實現定時任務
假如我們只是想要讓特定任務運行一次,那麼,這時候就要用到at監控程序了。
at類似列印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當於另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程序。
at命令執行流程如下
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
AT Time中的時間表示方法
-----------------------------------------------------------------------
時 間 例子 說明
-----------------------------------------------------------------------
Minute at now + 5 minutes 任務在5分鍾後運行
Hour at now + 1 hour 任務在1小時後運行
Days at now + 3 days 任務在3天後運行
Weeks at now + 2 weeks 任務在兩周後運行
Fixed at midnight 任務在午夜運行
Fixed at 10:30pm 任務在晚上10點30分
注意:linux默認為不啟動,而ubuntu默認為啟動的。檢查是否啟動,用service atd檢查語法,用service atd status檢查atd的狀態,用service atd start啟動atd服務。
查看at執行的具體內容:一般位於/var/spool/at目錄下面, 用vi打開,在最後一部分就是你的執行程序
參數詳解
-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程序/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入
網路應用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定
刪除任務
atrm 2
三天後的下午 5 點鍾執行 /bin/ls :
at 5pm 3 days /bin/ls
三個星期後的下午 5 點鍾執行 /bin/ls :
at 5pm 2 weeks /bin/ls
明天的 17:20 執行 /bin/date :
at 17:20 tomorrow /bin/date
1999 年的最後一天的最後一分鍾印出 the end of world !
at 23:59 12/31/1999 echo the end of world !
頂2踩0
3. Linux設置定時任務
《使用PSSH批量管理Linux》 一文中,已經學習了使用pssh批量管理linux的技巧。而很多時候,我們需要定時執行一些任務,或者需要定時執行一些批量任務。因此,本文就來研究一下linux設置定時任務的方法。
主要參考 Linux Crontab 定時任務 、 Linux定時任務Crontab命令詳解 和 Linux 定時任務詳解 。
cron(crond)是linux下用來周期性的執行某種任務或等待處理某些事件的一個守護進程。linux系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。crond進程每分鍾會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。另外,由於使用者自己也可以設置計劃任務,所以,linux系統也提供了使用者控制計劃任務的命令:crontab命令。
crontab命令是cron table的簡寫,它是cron的配置文件,也可以叫它作業列表,我們可以在以下文件夾內找到相關配置文件。
linux下的任務調度分為兩類,系統任務調度和用戶任務調度。
系統任務調度:系統周期性所要執行的工作,比如寫緩存數據到硬碟、日誌清理等。 /etc/crontab 文件就是系統任務調度的配置文件。
用戶任務調度:用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定製自己的計劃任務。所有用戶定義的crontab文件都被保存在 /var/spool/cron/crontabs/ 目錄中,其文件名與用戶名一致。
假設我們使用的是Ubuntu14.04.5 Server版,查看 /etc/crontab ,內容為:
第一行SHELL變數指定了系統要使用哪個shell;第二行PATH變數指定了系統執行 命令的路徑。
接下來的命令格式為:
m h dom mon dow user command
英文全拼為:
minute hour day month week user commond
注意, /var/spool/cron 目錄中的用戶調度任務,沒有user一項,因為文件名已經代表了user。
在以上各個欄位中,還可以使用以下特殊字元:
crontab命令格式為:
crontab [-u username] [file] [ -e | -l | -r ]
設置定時任務和時間緊密相關,如果伺服器的時區時間設置和本地不同,就不能保證計劃任務的正確執行。所以使用crontab的第一步,是調節好伺服器的時間。
下面參考 Ubuntu 16.04將系統時間寫入到硬體時間BIOS ,對伺服器時間進行調節。
時間是有時區的,無論硬體時間還是操作系統時間。hwclock的時區在/etc/default/rcS文件中設置,裡面有一個參數UTC,默認值為yes,表示使用UTC時區,如果設置為no,那表示使用osclock的時區。建議hwclock與osclock設置相同的時區,也就是no。
1、查看伺服器硬體時間
sudo hwclock -r ,看到的時間格式為: Wed 23 May 2018 11:02:17 AM HKT -0.031663 seconds
2、查看伺服器系統時間
date ,看到的時間格式為: Wed May 23 11:02:41 HKT 2018
3、設置hwclock和osclock時區相同
sudo vim /etc/default/rcS ,找到:
修改為:
4、將系統時間寫入硬體時間
sudo hwclock -w
5、修改系統時區
osclock的時區配置文件為/etc/timezone,不建議直接修改配置文件。
如果你想修改為CST時間,那麼執行 sudo tzselect 命令時,選擇Asia->China->Beijing Time即可,這時會提示使用Asia/Shanghai時區。(ubuntu和centos通用)
6、設置即刻生效
執行 date ,發現時區沒有變化,依然是HKT。
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo ntpdate time.windows.com
如果執行ntpdate報錯:ntpdate[18409]: no server suitable for synchronization found ,那麼就換一個時間同步工具。
sudo apt-get install rdate
sudo rdate -s time-b.nist.gov
再次執行 date ,發現時區已經變成了CST。
7、硬體時間同步
sudo hwclock -r ,發現硬體時間落後。
sudo hwclock -w ,再次把系統時間寫入硬體時間,同步完成。
實例1:每分鍾、每小時、每天、每周、每月、每年執行
實例2:每小時的第3和第15分鍾執行
3,15 * * * * myCommand
實例3:在上午8點到11點的第3和第15分鍾執行
3,15 8-11 * * * myCommand
實例4:每隔兩天的上午8點到11點的第3和第15分鍾執行
3,15 8-11 */2 * * myCommand
實例5:每周一上午8點到11點的第3和第15分鍾執行
3,15 8-11 * * 1 myCommand
實例6:每晚的21:30重啟smb
30 21 * * * /etc/init.d/smb restart
實例7:每月1、10、22日的4 : 45重啟smb
45 4 1,10,22 * * /etc/init.d/smb restart
實例8:每周六、周日的1 : 10重啟smb
10 1 * * 6,0 /etc/init.d/smb restart
實例9:每天18 : 00至23 : 00之間每隔30分鍾重啟smb
0,30 18-23 * * * /etc/init.d/smb restart
實例10:每星期六的晚上11 : 00 pm重啟smb
0 23 * * 6 /etc/init.d/smb restart
實例11:每一小時重啟smb
0 * * * * /etc/init.d/smb restart
實例12:晚上11點到早上7點之間,每隔一小時重啟smb
0 23-7/1 * * * /etc/init.d/smb restart
實例13:每月的4號與每周一到周三的11點重啟smb
0 11 4 * mon-wed /etc/init.d/smb restart
實例14:一月一號的4點重啟smb
0 4 1 jan * /etc/init.d/smb restart
實例15:每小時執行/etc/cron.hourly目錄內的腳本
01 * * * * root run-parts /etc/cron.hourly
run-parts這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是目錄名了。
目標:每分鍾查看一下ganglia的狀態,並保存到/tmp/log/ganglia目錄。
1、創建/tmp/log/ganglia目錄
sudo mkdir -p /tmp/log/ganglia
sudo chmod a+w /tmp/log/ganglia
2、編輯crontab
crontab -e ,選擇編輯器為vim
3、在crontab文件中添加一行
4、查看crontab任務
crontab -l ,看到任務已經添加成功。
5、等待了五分鍾,發現/tmp/log/ganglia目錄下啥也沒有。
sudo service cron status ,狀態正常。
sudo /etc/init.d/cron restart ,重啟cron試試。
又等待了五分鍾,發現/tmp/log/ganglia目錄下依然空空。
莫非是因為pssh沒有使用絕對路徑? whereis pssh ,找到pssh路徑為 /usr/lib/pssh ,修改crontab為:
然而,並沒有用。
還是查看下crontab日誌吧!
以下主要參考 Ubuntu下用crontab 部署定時任務 。
1、編輯50-default.conf
sudo vim /etc/rsyslog.d/50-default.conf
2、把cron前的井號去掉,也就是修改為:
3、重啟rsyslog服務
sudo service rsyslog restart
4、重啟crontab服務
sudo service cron restart
5、查看crontab日誌
less /var/log/cron.log
果然發現了問題:
也就是說,命令確實按時執行了,只不過沒有執行完,被百分號截斷了,導致log文件沒有正常生成!
修改crontab為:
終於,log文件成功生成,nice!但是,文件內容是空的!因為, /usr/lib/pssh 是一個目錄,不是pssh命令!真正的pssh命令是parallel-ssh,找到它的位置為 /usr/bin/parallel-ssh ,修改crontab:
至此,問題圓滿解決。
實際使用的時候,一天獲取一次ganglia的狀態就夠了,所以crontab改成:
以上,每天執行一次定時任務,抓取ganglia的運行狀態保存到日誌文件中。緊接著,我們的目標是使用腳本檢查當天的日誌文件,如果發現ganglia運行異常,則產生一個錯誤日誌。
1、假設日誌文件ganglia-20180524.log的內容為:
2、參考 grep命令最經常使用的功能總結 ,編寫腳本checkganglia.sh
3、執行
chmod a+x checkganglia.sh
./checkganglia.sh
如果所有客戶機的ganglia運行正常,就會輸出All services are runing!。如果有的客戶機ganglia進程不存在,則會在/tmp/log/ganglia/目錄下生成當天的錯誤日誌。
4、設置定時運行
因為日誌的檢查工作要在日誌生成之後,所以時間上延後十分鍾。
上面的腳本,還有很多要改進的地方。比如有的客戶機宕機了,上面的腳本檢查不出來。比如有的客戶機ganglia服務沒有啟動,那麼具體是哪幾台?針對這兩個問題,下面進行改進。假設已經知道客戶機的數量為10。
參考 csplit命令 ,checkganglia.sh腳本修改為:
以上腳本,實現了當客戶機數量不為10的時候,進行報錯;當客戶機ganglia服務沒有啟動時,進行報錯,並且篩選出所有沒有啟動ganglia的客戶機。
本文中,我們先學習了crontab的基礎知識和基本用法。然後通過監控ganglia這一個應用場景來具體學習crontab的詳細使用方法,包括查看cron日誌的方法,crontab中命令轉義的方法,定時執行腳本的方法,以及審閱日誌腳本的編寫和進階。
至此,還不夠完美,因為我們需要每天登錄管理機查看有沒有錯誤日誌。下一篇 Linux設置郵件提醒 中,我們將會研究linux設置郵件提醒的方法。審閱完日誌後,如果腳本能夠給我們發送一封郵件,告知我們審閱的結果,那麼我們就不必再每天查看錯誤日誌。
4. java定時器如何配置文件,就是下面這個題,該怎麼做啊
這是一個設計類的題目.不是叫你去配置,目前java的時間任務框架已經比較成熟了
解決這個問題大概需要做一下工作
1 寫一個xml的解釋器類,或者用java的XML的解釋器,用來解釋定時任務xml配置文件
2 寫一個任務管理類
在1解釋完xml後,實際上就是根據xml的配置來執行定時任務了
題目中的介面,實際上就是模擬Thread類,用來執行任務
管理類就是根據配置來啟動和關閉定時任務
5. 如何在spring中配置定時任務
spring的定時任務配置分為三個步驟:
1、定義任務
2、任務執行策略配置
3、啟動任務
(程序中一般我們都是到過寫的,直觀些)
1、定義任務
<!--要定時執行的方法-->
<bean id="testTaskJob"
class="org.springframework.scheling.quartz.">
<property name="targetObject">
<!--指定要定時執行的方法所在類,將定時任務定義成bean-->
<ref bean="testTask" />
</property>
<property name="targetMethod">
<!--指定定時執行的方法-->
<value>execute</value>
</property>
<property name="concurrent">
<!--指定目標封裝為有狀態的任務,有狀態的任務不能並發執行,無狀態的任務可並發執行-->
<value>false</value>
</property>
</bean>
2、任務執行策略配置
(1)指定重復間隔的定時任務
<!-- 調度時間設置-->
<bean id="testTaskJobTrigger"
class="org.springframework.scheling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="testTaskJob" />
</property>
<!-- 延時啟動時間,單位ms -->
<property name="startDelay" value="60000"></property>
<!-- 重復間隔時間,單位ms -->
<property name="repeatInterval" value="60000">
</property>
</bean>
(2)按周期執行的任務
6. 如何在spring中配置定時任務
在spring 中 基於註解的 定時配置很簡單,只需要三步哦,如下:
1、在類名前加@Component註解,標記該bean,也就是配置掃描標記。
2、在該類下的方法前加定是配置註解,@Schele("cron= 0/30 * * * * *")。
3、添加配置文件(如下)。
實例如下:
1、class源文件。
package com.iss.ole.cggl.quartz;
import org.springframework.scheling.annotation.Scheled;
/**
* @function 訂單計算 定時任務
* 1、試制訂單定時計算
* a、車型拆分成零件需求
* b、需求生成訂單明細
* 2、試裝訂單定時計算
* 3、工料廢訂單定時計算
* @author zhoujian
* @date 2014/10/29
*/
@Component
public class Quartz extends Base<a href="https://www..com/s?wd=Biz&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">Biz</a>{
/** 車型拆分 成零件 <a href="https://www..com/s?wd=BIZ&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">BIZ</a>*/
private PlanManager<a href="https://www..com/s?wd=Biz&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">Biz</a> planManagerBiz;
/** 車型拆分為毛需求 */
@Scheled(cron="0 0 06 * * ? ")
public void convertVehicleToParts() {
try {
planManagerBiz.createPartsList();
} catch (BaseException e) {
logger.error("");
e.printStackTrace();
}
}
public PlanManagerBiz getPlanManagerBiz() {
return planManagerBiz;
}
public void setPlanManagerBiz(PlanManagerBiz planManagerBiz) {
this.planManagerBiz = planManagerBiz;
}
}
2、配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="<a href="http://www.springframework.org/schema/beans" " target="_blank">http://www.springframework.org/schema/beans" </a>
xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" " target="_blank">http://www.w3.org/2001/XMLSchema-instance" </a>
xmlns:context="<a href="http://www.springframework.org/schema/context"" target="_blank">http://www.springframework.org/schema/context"</a>
xmlns:p="<a href="http://www.springframework.org/schema/p" " target="_blank">http://www.springframework.org/schema/p" </a>
xmlns:task="<a href="http://www.springframework.org/schema/task"" target="_blank">http://www.springframework.org/schema/task"</a>
xmlns:tx="<a href="http://www.springframework.org/schema/tx"" target="_blank">http://www.springframework.org/schema/tx"</a>
xmlns:aop="<a href="http://www.springframework.org/schema/aop" " target="_blank">http://www.springframework.org/schema/aop" </a>
xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans " target="_blank">http://www.springframework.org/schema/beans </a>
<a href="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" target="_blank">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</a>
<a href="http://www.springframework.org/schema/context " target="_blank">http://www.springframework.org/schema/context </a>
<a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd" target="_blank">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a>
<a href="http://www.springframework.org/schema/tx " target="_blank">http://www.springframework.org/schema/tx </a>
<a href="http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" target="_blank">http://www.springframework.org/schema/tx/spring-tx-3.0.xsd</a>
<a href="http://www.springframework.org/schema/task" target="_blank">http://www.springframework.org/schema/task</a>
<a href="http://www.springframework.org/schema/task/spring-task-3.0.xsd " target="_blank">http://www.springframework.org/schema/task/spring-task-3.0.xsd </a>
<a href="http://www.springframework.org/schema/aop " target="_blank">http://www.springframework.org/schema/aop </a>
<a href="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd " target="_blank">http://www.springframework.org/schema/aop/spring-aop-3.0.xsd </a>
">
<!-- 掃描有相關標記的bean,初始化,交給spring管理-->
<context:component-scan base-package="com.iss.ole.cggl.quartz" />
<!-- 注入屬性-->
<bean id="quartz" class="com.iss.ole.cggl.quartz.Quartz">
<property name="planManagerBiz">
<ref bean="planManagerBiz"/>
</property>
</bean>
</beans>
7. 按鍵精靈讀取配置文件,運行子程序
用子程序傳參.
上面Call 任務(i)這個是對的.
但是下面的子程序 任務1 後面的數字1是作為名稱不是參數,所以它不會運行.應該:
任務=Plugin.File.ReadINI("rw","rw","c:配置.ini")
任務=split(任務,"|")
Fori=0ToUBound(任務)
If任務(i)="做任務"Then
Call做任務
ElseIf任務(i)="打怪"Then
Call打怪
EndIf
Next
Sub打怪
EndSub
Sub做任務
EndSub
8. Centos7 利用crontab定時執行任務及配置方法
crond是什麼?
crond 和crontab是不可分割的。crontab是一個命令,常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於「crontab」文件中,以供之後讀取和執行。該詞來源於希臘語chronos(χρόνος),原意是時間。
而crond正是它的守護進程。cron服務是一個定時執行的服務,可以通過crontab 命令添加或者編輯需要定時執行的任務。
linux定時任務分為兩種
1)系統自身輪訓的任務,比如定時(5天或者一周)備份/var/log/message等日誌文件(系統的定時任務一般分為七段或者八段(centos6以下),以空格分割)
系統輪訓的配置文件/etc/logrotate.conf (centos7以下的在/etc/cron.daily/logrotate/logrotate.conf )
2)用戶執行的定時任務(用戶的定時任務一般分為六段)
at適合執行一次就結束的調度任務
anacrontab適合於非7*24小時開機的伺服器准備的,是以天為單位執行的,不能指定以分鍾的定時任務,在停機期間沒有任務執行,可以開機時執行。
cron服務是Linux的內置服務,但它不會開機自動啟動,可以每分鍾執行任務。可以用以下命令啟動和停止服務:
以上1-5行分別為啟動、停止、重啟服務和重新載入配置、查看服務狀態
把cron設為在開機的時候自動啟動
crontab操作
基本格式
基本使用
9. Spring使用@Scheled註解配置定時任務
項目中經常會用到定時任務。所以在這里總結一下在SSM框架中如何配置定時任務。
1、在spring的配置文件spring.xml(文件名可以任意)中增加如下配置
1):spring配置文件加入頭部加入
2):spring配置文件加入定時任務註解配置
3):spring配置文件加入定時任務掃描包
4):spring配置文件加入配置定時任務的線程池。因為spring的定時任務默認是單線程,多個任務執行起來時間會有問題。
2、在package com.sc.api下新增定時任務相關類ScheledApiTest
調用的兩種方式:
@Scheled註解為定時任務,@Component 把普通pojo實例化到spring容器中,相當於配置文件中的<bean id="" class=""/>
1):如果需要以固定速率執行,只要將註解中指定的屬性名稱改成fixedRate即可,以下方法將以一個固定速率1分鍾來調用一次執行,這個周期是以上一個任務開始時間為基準,從上一任務開始執行後1分鍾再次調用。
@Scheled(fixedRate = 1000 60 30) //心跳更新。啟動時執行一次,之後每隔1分鍾執行一次
2):如果你需要在特定的時間執行,就需要用到cron,cron表達式里為執行的時機
@Scheled(cron = "0 34 13 * * ?") //每天的13點30分執行一次。
3、啟動tomcat服務,定時任務就會按時執行。
關於CRON表達式 含義
10. 在linux下怎麼讓一個腳本定時運行
Linux中,周期執行的任務一般由cron這個守護進程來處理 ps -ef | grep cron
cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。
cron的配置文件稱為「crontab」,是「cron table」的簡寫。