㈠ 在linux下怎麼讓一個腳本定時運行
Linux中,周期執行的任務一般由cron這個守護進程來處理 ps -ef | grep cron
cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。
cron的配置文件稱為「crontab」,是「cron table」的簡寫。
一、 cron在3個地方查找配置文件(設置shell腳本):
1、/var/spool/cron/yanggang 這個目錄下存放的是每個用戶(包括root)的crontab任務,每個任務以創建者的名字命名,比如用戶tom建的crontab任務對應的文件就是/var/spool/cron/tom
yanggang@barry$ sudo ls -l /var/spool/cron/(或有時是 /var/spool/cron/crontabs/)
-rw------- 1 root crontab 1071 2011-09-19 17:20 root
-rw------- 1 yanggang crontab 1176 2011-09-24 11:07 yanggang
一般一個用戶最多隻有一個crontab文件(如:root, yanggang等),其對應日誌在/var/spool/mail/root(或/var/spool/mail/yanggang)文件里
2、/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
例如:
*/5 * * * * root /usr/libexec/atrun
minute:代表一小時內的第幾分,范圍 0-59。
hour:代表一天中的第幾小時,范圍 0-23。
mday:代表一個月中的第幾天,范圍 1-31。
month:代表一年中第幾個月,范圍 1-12。
wday:代表星期幾,范圍 0-7 (0及7都是星期天)。
who:要使用什麼身份執行該指令,當您使用 crontab -e 時,不必加此欄位。
command:所要執行的指令。
3、/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 //查看服務狀態
例如: 使用sudo停止與啟動服務
yanggang@barry$sudo service cron stop
cron stop/waiting
yanggang@barry$ sudo service cron start
cron start/running, process 7502
五、 crontab用法
crontab命令用於安裝、刪除或者列出用於驅動cron後台進程的表格,用戶把需要執行的命令序列放到crontab文件中以獲得執行。
每個用戶都可以有自己的crontab文件,/var/spool/cron下的crontab文件不可以直接創建或者直接修改,該crontab文件是通過crontab -e命令創建的
在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
每天(凌晨4:02)執行/etc/cron.daily內的腳本
02 4 * * * root run-parts /etc/cron.daily
每星期(周日凌晨4:22)執行/etc/cron.weekly內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly
每月(1號凌晨4:42)去執行/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
每天早晨三點二十分執行用戶目錄下如下所示的兩個指令(每個指令以;分隔):
203 * * * (/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,553 4-91,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt
六、幾個問題
crond 進程沒有運行
1. 啟動crond進程
/etc/init.d/crond start
2. 開機自啟動crond進程
chkconfig crond on
crontab 編輯:
輸入編輯命令: crontab -e
# m h dom mon dow command
SHELL=/bin/bash
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh
Ctrl + O (寫入)——》enter鍵(保存文件名)——》Ctrl + X(退出)
輸入查看命令: crontab -l
# m h dom mon dow command
SHELL=/bin/bash
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(建議使用此方式)
語法錯誤:
Syntax error: "(" unexpected
路徑錯誤:
在 /var/spool/crontab/yanggang 中,添加了如下命令,在日誌文件 /var/spool/mail/yanggang 中提示找不到 xxx.sh 路徑
30 * * * * /home/barry/top800/top10/top10_fruits/top10_all.sh
或
30 * * * * bash /home/barry/top800/top10/top10_fruits/top10_all.sh
這是因為在crontab中使用了絕對路徑執行腳本 top10_all.sh,因此在腳本 top10_all.sh 中引用的其它腳本也都需要使用絕對路徑,才能被crontab找到並執行
如何避免絕對路徑復雜的設置呢,如上文 六、幾個問題 所示,採用如下格式:
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(建議使用此方式,先進入該目錄,然後在執行腳本;否則,執行腳本中的其它腳本都需要加絕對路徑)
㈡ 在linux下怎麼讓一個腳本定時運行
Linux中,周期執行的任務一般由cron這個守護進程來處理 ps -ef | grep cron
cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。
cron的配置文件稱為「crontab」,是「cron table」的簡寫。
㈢ 寶塔上怎麼做定時任務執行php腳本得,請大牛指點,詳解謝謝
用crond服務,設置定時任務。不光定時執行腳本,看服務狀態也可以,多用於系統的健康檢查。望採納
㈣ linux定時執行任務的shell腳本怎麼寫
linux下使用crontab命令被用來提交和管理用戶的需要周期性執行的任務,示例如下:
crontab
-e
編輯周期任務
30
21
*
*
*
/etc/init.d/smb
restart
每晚的21:30重啟smb
crontab命令說明:
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鍾會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
選項
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。
參數
crontab文件:指定包含待執行任務的crontab文件。
㈤ Mysql定時執行腳本(計劃任務)實例
查看event是否開啟
代碼如下
show
variables
like
'%sche%';
將事件計劃開啟
代碼如下
set
global
event_scheler
=1;
創建存儲過程test
代碼如下
CREATE
PROCEDURE
test
()
BEGIN
update
examinfo
SET
endtime
=
now()
WHERE
id
=
14;
END;
創建event
e_test
代碼如下
create
event
if
not
exists
e_test
on
schele
every
30
second
on
completion
preserve
do
call
test();
每隔30秒將執行存儲過程test,將當前時間更新到examinfo表中id=14的記錄的endtime欄位中去.
關閉事件任務
代碼如下
alter
event
e_test
ON
COMPLETION
PRESERVE
DISABLE;
開戶事件任務
代碼如下
alter
event
e_test
ON
COMPLETION
PRESERVE
ENABLE;
以上測試均成功,測試環境為mysql
5.4.2-beta-community
mysql
community
server(GPL)
以上的相關內容就是對MySQL定時執行的介紹,望你能有所收獲。
mysql
計劃任務重啟後消失
我們只要修改一配置即可
event_scheler在mysql的config中設置為OFF有關。去mysql中將配置改為ON則就搞定了。
㈥ 如何寫一個linux的定時程序腳本(代碼)
crontab -e添加一個定時任務就可以了
格式如下:
f1 f2 f3 f4 f5 program
其中 f1 是表示分鍾,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
比如:
每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha"
20 0-23/2 * * * echo "haha"
㈦ 怎麼用 T-SQL 編寫一個定時任務腳本
SQL Server 2008 定時作業的制定
1.打開【SQL Server Management Studio】,在【對象資源管理器】列表中選擇【SQL Server 代理】;
2.滑鼠右擊【SQL Server 代理】,選擇【啟動(S)】,如已啟動,可以省略此步驟;
3.展開【SQL Server 代理】列表,右擊【作業】>【新建作業】;
3.1 在【常規】選項卡中:
輸入作業名稱,如"My Job";
3.2 在【步驟】選項卡中:
3.2.1 點擊【新建】,輸入【步驟名稱】,如「步驟1」,類型默認T-SQL腳本,也可以選擇SSIS包等;
3.2.2 在【資料庫】一欄選擇要作業處理的資料庫,在【命令】的右邊空白編輯欄輸入要執行的SQL代碼,
你要運行的SQL語句
也可以點擊命令下面的【打開】,打開.sql腳本;
3.2.3 輸入運行腳本後,建議點擊【分析】,確保腳本語法正確,然後點擊下面的【確定】按鈕;
3.3 在【計劃】選項卡中:
3.3.1 點擊【新建】,輸入【計劃名稱】,如「計劃1」,計劃類型默認是」重復執行」,也可以選擇執行一次等;
3.3.2 在【頻率】>【執行】處選擇「每天」、「每周」或「每月」,以「每天」為例,間隔時間輸入間隔幾天執行一次,
你選擇每周執行,執行間隔為1周,在星期一、星期二、星期三、星期四、星期五,執行一次,時間為8:00:003.3.3 在【持續時間】中選擇計劃開始執行的【起始日期】和【截止日期】,然後點擊【確定】按鈕;
注意要將服務設置為自動啟動,否則在重啟伺服器後作業就不運行了。
啟動代理服務的方法:
開始>運行>輸入services.msc>找到【SQL Server 代理】的服務並雙擊>【啟動類型】選擇「自動」>【確定】
至此,定時作業已創建完畢。
㈧ 定時任務 oraclejob linux 腳本怎麼寫
linux下使用crontab命令被用來提交和管理用戶的需要周期性執行的任務,示例如下:
crontab
-e
編輯
周期任務
30
21
*
*
*
/etc/init.d/smb
restart
每晚的21:30重啟smb
crontab命令說明:
crontab命令被用來提交和管理用戶的需要周期性執行的任務...
㈨ crontab 的定時任務執行的腳本,有辦法把執行情況生成日誌嗎
直接crontab -e添加執行腳本,然後給執行腳本加個重定向到文件就行了。例如:30 23 * * * /path/to/shell/script >> /path/to/log/file #表示每晚的23:30執行/path/to/shell/script腳本,並且把結果重定向輸出到/path/to/log/file文件。
crontab參數:
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。
crontab的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下: minute hour day month week command,時間欄位都是整數, command:要執行的命令,可以是系統命令,也可以是自己編寫的shell腳本文件。 在以上各個欄位中,還可以使用以下特殊字元:
星號(*):代表所有可能的值,全部。
逗號(,):可以用逗號隔開的值指定一個列表范圍。
中杠(-):可以用整數之間的中杠表示一個整數范圍。
正斜線(/):可以用正斜線指定時間的間隔頻率。
㈩ windows怎麼定時執行腳本
Win7系統中點擊開始按鈕,依次選擇打開所有程序—附件—系統工具,找到任務計劃程序即可打開Win7系統的任務計劃設置面板。
在Win7系統的任務計劃程序設置面板中,我們點擊菜單操作—創建基本任務。
1、輸入新建任務的名稱和描述,點擊下一步按鈕。
2、在觸發器選項中選擇自己需要的執行頻率,比如是每天、每周、每月還是單次等等,繼續下一步。
3、繼續設置觸發時間詳細選項。繼續點擊下一步。
4、在操作選項中,Win7系統可以讓我們在啟動程序、發送電子郵件、顯示消息中選擇,因為我們需要執行某個批處理文件,所以這里我們選擇啟動程序。繼續點擊下一步。
5、現在進入啟動程序詳細設置,在程序或腳本一欄點擊瀏覽,選擇自己已經寫好的批處理文件。
6、點擊下一步之後,我們可以看見Win7任務計劃會給出當前設置任務的詳細情況,確認無誤後點擊確認按鈕即可完成Win7定時關機的任務計劃設定。
7、現在,我們在Win7系統的任務計劃程序設置面板中可以看到剛才我們設定的定時關機任務,下方按類型列出該任務的詳細信息。右鍵單擊任務,可以從右鍵單擊中對任務進行靈活操作,比如運行、結束、禁用、導出、屬性、刪除等等,非常方便。