centOS系統上安裝crontab服務的安裝使用

來源:互聯網
上載者:User

輸入下面的命令查看是否安裝crontab服務。

which crontab

如果已安裝會顯示路徑,沒有的話,安裝也十分的簡單,用yum安裝crontab:

yum install vixie-cron
yum install crontabs

vixie-cron軟體包是cron的主程式;crontabs軟體包是用來安裝、卸裝、或列舉用來驅動 cron 守護進程的表格的程式。

下面兩條簡單的命令幫你查看並啟動crond服務:

查看crontab服務狀態:service crond status

手動啟動crontab服務:service crond start

怎麼查看crond服務是否開機啟動命令:

chkconfig --list | grep crond

如果不知道服務名或想查看所有開機服務,那麼直接輸入chkconfig即可。

基本用法:

1. crontab -l
列出當前的crontab任務
2. crontab -d
刪除當前的crontab任務
3. crontab -e (solaris5.8上面是 crontab -r)
編輯一個crontab任務,ctrl_D結束
4. crontab filename
以filename做為crontab的工作清單檔案並載入

crontab file的格式:
crontab 檔案中的行由 6 個欄位組成,不同欄位間用空格或 tab 鍵分隔。前 5 個欄位指定命令要啟動並執行時間
分鐘 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期幾(0-6,其中 0 代表星期日)
第 6 個欄位是一個要在適當時間執行的字串

執行個體如下:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date (solaris 5.8似乎不支援此種寫法)
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
0 4 1 jan * date


在使用crontab的時候,要特別注意的是運行指令碼中能夠訪問到的環境變數和當前測試環境中的環境變數未必一致,一個比較保險的做法是在啟動並執行指令碼程式中自行設定環境變數(export)

(1)先建一個檔案crond.txt如下, 每天早上5點36分重新啟動
36 5 * * * reboot

(2)上傳到/opt目錄

(3)運行命令

crontab /opt/crond.txt
crontab -l

讓設定檔生效:如果讓設定檔生效,還得重新啟動cron,切記,既然每個使用者下的cron設定檔修改後。也要重新啟動cron伺服器。

在Fedora 和RedHat中,我們應該用;
[root@localhost ~]# /etc/init.d/crond restart

如果讓crond 在開機時運行,應該改變其運行層級;

[root@localhost ~]# chkconfig --levels 35 crond on

service crond status 查看 cron服務狀態,如果沒有啟動則 service crond start啟動它, cron服務是一個定時執行的服務,可以通過crontab 命令添加或者編輯需要定時執行的任務

====================================================

cron是一個linux下的定時執行工具,可以在無需人工幹預的情況下運行作業。由於Cron 是Linux的內建服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:

/sbin/service crond start //啟動服務

/sbin/service crond stop //關閉服務

/sbin/service crond restart //重啟服務

/sbin/service crond reload //重新載入配置

你也可以將這個服務在系統啟動的時候自動啟動:

在/etc/rc.d/rc.local這個指令碼的末尾加上:

/sbin/service crond start

=================================================

參考了以上達人的資料後,為驗證我的理解,寫了個測試程式,過程如下,僅供參考:

Platform:EL3 User:eric

1) 建一shell run.sh內容如下

echo "OK,crontab"

date >> ~/crontab_test.txt

exit 0

2) crontab -e

輸入*/1 * * * * ~/run.sh

ok, 每分鐘shell都會提示收到一封信郵件

cat /var/spool/mail/eric | less會看到執行的資訊

如果制止系統發郵件,可在第二步改為*/1 * * * * ~/run.sh > /dev/null

cat crontab_test.txt


Linux下如何定時執行php指令碼

分為兩種情況:
第一種情況:你的php指令碼中沒有引入其他PHP檔案,也就是說沒有include,require_once等命令的PHP檔案
* */1 * * * /usr/local/php/bin/php  /var/www/html/wwwroot/web/script.php (每一小時執行一次script.php)
注意,這樣寫需要把PHP變成可執行檔指令檔。在命令列下,指令碼所在目錄
chmod +x script.php
注意:你的script.php檔案中一定要在開始處加上: #!/usr/local/php/bin/php -q ,下面是一個完整的script.php檔案代碼


<?php
#!/usr/local/php/bin/php -q
session_start();
define( "DB_PASSWORD", "111111" ); // 伺服器登陸密碼
define( "DB_NAME", "db_shopping" ); // 資料庫名稱
define( "DB_USER", "root" ); // 伺服器登陸使用者
define( "DB_HOST", "127.0.0.1" ); // 伺服器IP地址或名稱
define( "DB_PORT", "3306" ); // 伺服器登陸連接埠號碼
define( "DB_CHARSET", "utf8" ); // 資料庫預設語言
define( "DB_DEBUG", false ); // 是否設定為偵錯模式
define( "DB_CLOSE", false ); // 是否主動關閉資料庫連接
$con=mysql_connect(DB_HOST.":".DB_PORT,DB_USER,DB_PASSWORD);
mysql_query ( "SET character_set_connection = ".DB_CHARSET.", character_set_results = ".DB_CHARSET.", character_set_client = binary");
if (!$con) die("Mysql Error:".mysql_error());
mysql_select_db(DB_NAME,$con);
//$dates=date()
$sqll="insert into test(NAME,Sex,thisdate,state) values('love','0','2011-08-11','1')";
$resl=mysql_query($sqll);
echo "成功...";
?>

/usr/local/php/bin/php的意思是:用/usr/local/php/bin/目錄中的php.exe檔案來執行 /var/www/html/wwwroot/web/script.php

第二種情況:你的php指令碼中有引入其他PHP檔案,也就是說有用到include,require_once命令的PHP檔案(先寫shell指令碼)
上面的方法有一個問題:當script指令碼中有include檔案時,指令碼根本找不對PHP的路徑,php將會在/bin/local/php目錄下找檔案,當然找不到。
所以,遇見這種情況,按照下面的方法做:
在終端上輸入如下命令得到sh 和 lynx 程式的路徑:
whereis sh
whereis lynx
or
which sh
which lynx
隨便輸入一個,其中便會返回你要的路徑。如果你的系統裡沒有lynx,試試links,w3m,或者 links2,這些是其它的文本模型瀏覽器。這些瀏覽器將會運行你的指令碼。
然後你需要建立一個sh檔案,用它來調用php檔案,通過lynx。假設你的伺服器已經安裝了lynx,sh路徑為 /bin/sh,lynx路徑為 /usr/local/bin/lynx

#!/bin/sh
/usr/local/bin/lynx -source http://www.yoursite.com/folder/script.php
注意驚嘆號
把這個指令碼儲存為cron-lynx.sh
儲存到一個你找得到的地方,比如:

你可以把它放在網站根目錄。
然後再建立一個script.php的檔案。當cron啟動並執行時候,將會通過lynx來調用它。這個檔案可以通過瀏覽器來訪問。

然後編輯主機的crontab,像下面這樣。
*/1 * * * *  /usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh 和 /usr 間有空格。就這樣就設好了,還有一點要注意的是,你的sh檔案和php檔案都正確無誤

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.