ubuntu下開機自動運行腳本、定時運行腳本

①開機自動運行:

先寫了測試腳本,在/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自動重新啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章