先寫了測試腳本,在/usr下,trans.sh
gedit /etc/init.d/rc.local
在最後加上腳本的地址就OK了
②定時運行腳本:
以下部分轉自:http://hi.baidu.com/michaelxdt/item/a8e4fec22a59867388ad9e62
cron,是一個Linux定時執行工具,可以在無需人工干預的情況下運行作業。
1. 關於crontab
在Ubuntu server 9.10下,cron是被默認安裝並啓動的。通過/etc/crontab文件,可以看到以下內容:
-----------------------------------------------------------------------------------------------------------------------
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
-----------------------------------------------------------------------------------------------------------------------
ununtu 通過調用 run-parts 命令,定時運行四個目錄下的所有腳本。
1)/etc/cron.hourly,目錄下的腳本會每個小時讓執行一次,在每小時的17分鐘時運行;
2)/etc/cron.daily,目錄下的腳本會每天讓執行一次,在每天的6點25分時運行;
3)/etc/cron.weekly,目錄下的腳本會每週讓執行一次,在每週第七天的6點47分時運行;
4)/etc/cron.mouthly,目錄下的腳本會每月讓執行一次,在每月1號的6點52分時運行;
當然,以上的時間均是系統默認時間,可以根據自己的需求進行修改。
2. cron 服務的啓動與停止
在Ubuntu 9.10下,cron是被默認安裝並啓動的。而 ubuntu 下啓動,停止與重啓cron,均是通過調用/etc/init.d/中的腳本進行。命令如下:
1)/sbin/service crond start // 啓動服務
2)/sbin/service crond stop // 關閉服務
3)/sbin/service crond restart // 重啓服務
4)/sbin/service crond reload // 重新載入配置
可以通過以下命令查看cron是否在運行(如果在運行,則會返回一個進程ID):
# pgrep cron
3. crontab
crontab 命令用於安裝、刪除或者列出用於驅動cron後臺進程的表格。也就是說,用戶把需要執行的命令序列放到crontab文件中以獲得執行,每個用戶都可以有自己的crontab文件。以下是這個命令的一些參數與說明:
1)crontab -u // 設定某個用戶的cron服務
2)crontab -l // 列出某個用戶cron服務的詳細內容
3)crontab -r // 刪除沒個用戶的cron服務
4)crontab -e // 編輯某個用戶的cron服務
/etc/crontab文件語法如下:
Minute Hour Day Month Dayofweek command
分鐘 小時 天 月 天每星期 命令
每個字段代表的含義及取值範圍如下:
Minute :分鐘(0-59),表示每個小時的第幾分鐘執行該任務
Hour : 小時(1-23),表示每天的第幾個小時執行該任務
Day : 日期(1-31),表示每月的第幾天執行該任務
Month : 月份(1-12),表示每年的第幾個月執行該任務
DayOfWeek : 星期(0-6,0代表星期天),表示每週的第幾天執行該任務
Command : 指定要執行的命令(如果要執行的命令太多,可以把這些命令寫到一個腳本里面,然後在這裏直接調用這個腳本就可以了,調用的時候記得寫出命令的完整路徑)
在這些字段裏,除了“Command”是每次都必須指定的字段以外,其它字段皆爲可選字段,可視需要決定。對於不指定的字段,要用“*”來填補其位置。同時,cron支持類似正則表達式的書寫,支持如下幾個特殊符號定義:
“ * ” ,代表所有的取值範圍內的數字;
" / ", 代表"每"(“*/5”,表示每5個單位);
" - ", 代表從某個數字到某個數字(“1-4”,表示1-4個單位);
" , ", 分開幾個離散的數字;
舉例如下:
5 * * * * ls // 指定每小時的第5分鐘執行一次ls命令
30 5 * * * ls // 指定每天的 5:30 執行ls命令
30 7 8 * * ls // 指定每月8號的7:30分執行ls命令
50 7 * * * root run-parts/etc/cron.daily // 每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件
4. 新增 cron 任務
推薦使用crontab -e命令添加自定義的任務(編輯的是/var/spool/cron下對應用戶的cron文件,在/var/spool/cron下的crontab文件不可以直接創建或者直接修改,crontab文件是通過crontab命令得到的)。
# crontab -e
1)直接執行命令行
每2分鐘打印一個字符串“Hello World”,保存至文件/home/laigw/cron/HelloWorld.txt中,cron 格式如下:
*/2 * * * * echo "Hello World." >> /home/HelloWorld.txt
2)shell 文件
每3分鐘調用一次 /home/laigw/cron/test.sh 文件,cron 格式如下:
*/3 * * * * /home/laigw/cron/test.sh
文件 /home/laigw/cron/test.sh 的內容如下:
-----------------------------------------------------------------------------------------------------------------------
#!/bin/sh
cd /home/laigw/cron
echo "shell" >> shell.txt
-----------------------------------------------------------------------------------------------------------------------
3)php 文件
php 文件需要增加命令行 “#!/usr/local/php/bin/php”,其 “/usr/local/php/bin/php” 的意思是,需要引入PHP程序安裝目錄下的/bin/php 文件(該ubuntu系統中,PHP程序的安裝目錄是/usr/local/php),而這種引入文件的處理方式有兩種。
a. 在 php 文件中引入命令行(推薦使用),cron 的格式如下:
*/1 * * * * /home/laigw/cron/test.php
文件 /home/laigw/cron/test.php 的內容如下:
-----------------------------------------------------------------------------------------------------------------------
#!/usr/local/php/bin/php
<?php
$file = '/home/laigw/cron/php/first_'.date('H').'-'.date('i').'-'.date('s').'.txt';
file_put_contents($file, date('Y-m-d h:i:s'));
?>
-----------------------------------------------------------------------------------------------------------------------
注:需要把test.php文件賦予可執行權限:# chmod +x test.php
b. 在寫 cron 任務時引入命令行,cron 的格式如下:
*/1 * * * * /usr/local/php/bin/php /home/laigw/cron/test.php
文件 /home/laigw/cron/test.php 的內容如下:
-----------------------------------------------------------------------------------------------------------------------
<?php
$file = '/home/laigw/cron/php/second_'.date('H').'-'.date('i').'-'.date('s').'.txt';
file_put_contents($file, date('Y-m-d h:i:s'));
?>
-----------------------------------------------------------------------------------------------------------------------
注:需要把test.php文件賦予可執行權限:# chmod +x test.php
5. 其他
/var/spool/cron/ 該目錄下存放所有用戶的cron服務
/var/log/cron 記錄cron運行的日誌信息
6. 一個超級用戶的 crontab
#Run the ‘atrun’ program every minutes
#This runs anything that’s due to run from ‘at’.See man ‘at’ or ‘atrun’.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun
40 7 * * * updatedb
8,10,22,30,39,46,54,58 * * * * /bin/sync
7. 例子
30 5 * * * root /sbin/init 6 這樣就將系統配置爲了每天早上5點30自動重新啓動。