導航:首頁 > 編程語言 > php自動執行linux

php自動執行linux

發布時間:2023-06-02 23:36:24

linux下如何自動執行php腳本 - PHP進階討論

根據你的情況,你的crontab似乎不能寫,為什麼呢?因為crontab中最小單位為1分鍾,你可以考慮增加時間間隔,比如半小時執行一次[ol][*][*]0,30 * * * * PHP文件的路徑 -c PHP配置文件路徑 -f 你的makelist.php路徑[*][/ol]所說的編譯時加入CLI支持就是在編譯配置的時候使用了--enable-cli參數,該參數預設是on的,如果你使用了--disable-cli 那麼就不能使用php的命令行版本[]

⑵ 如何通過PHP執行linux命令

你想問得是php如何執行shell命令把?\x0d\x0a\x0d\x0a可以用system(),exec(),passthru()這三個函數實現\x0d\x0a雖然這三個命令都能執行linux系統的shell命令,但是其實他們是有區別的:\x0d\x0a system() 輸出並返回最後一行shell結果。\x0d\x0a exec() 不輸出結果,返回最後一行shell結果,所有結果可以保存到一個返回的數組裡面。\x0d\x0a passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標准輸出設備上。\x0d\x0a 相同點:都可以獲得命令執行的狀態碼\x0d\x0a例子:system("ls -al");\x0d\x0a【使用之前要在php.ini中把safe_mode關閉】

⑶ Linux怎麼直接執行PHP腳本文件

首先腳本需要有執行許可權chmod u+x file.sh
執行腳本有三種方法:
1. ./file.sh
特點:開啟bash子進程來執行,也就是開啟額外的進程來進行,不影響原進程的變數、配置等
2. bash file.sh
特點:和./file.sh相同
3. source file.sh 或者 . file.sh
特點:在原bash進程中執行腳本。

第三種方法主要用於在腳本中切換用戶su、切換目錄cd等命令。
source 和 . 命令是相同的。
你可以搜索 source

補充,如何查看腳本運行是否開啟了bash子進程
vim file.sh
寫入
#!/bin/bash
#echo $$命令會輸出bash進程ID
echo $$
保存並賦予可執行許可權chmod u+x file.sh
在你的shell中輸入,echo $$ 屏幕輸出4176
./file.sh 屏幕輸出3600
bash file.sh 屏幕輸出3984
source file.sh 屏幕輸出4176 和 你直接在shell中輸出的一樣,說明是在同一個bash進程

⑷ PHP執行linux系統命令

首先先要給大家介紹PHP執行linux系統命令的幾個基本函數 我曾經很長一段時間都分不清下面幾個函數的具體用法區別 system函數 說明 執行外部程序並顯示輸出資料 語法 string system(string mand int [return_var]); 返回值: 字元串 詳細介紹 本函數就像是 C 語中的函數 system() 用來執行指令 並輸出結果 若是 return_var 參數存在 則執行 mand 之後的狀態會填入 return_var 中 同樣值得注意的是若需要處理用戶輸入的資料 而又要防止用戶耍花招破解系統 則可以使用 EscapeShellCmd() 若 PHP 以模塊式的執行 本函數會在每一行輸出後自動更新 Web 伺服器的輸出緩沖暫存區 若需要完整的返回字元串 且不想經過不必要的其它中間的輸出界面 可以使用 PassThru() 實例代碼

< ?php $last_line = system( ls $retval); echo Last line of the output: $last_line; echo <hr />Return value: $retval; ?>

exec函數 說明 執行外部程序 語法 string exec(string mand string [array] int [return_var]); 返回值: 字元串 詳細介紹 本函數執行輸入 mand 的外部程序或外部指令 它的返回字元串只是外部程序執行後返回的最後一行 若需要完整的返回字元串 可以使用 PassThru() 這個函數 要是參數 array 存在 mand 會將 array 加到參數中執行 若不欲 array 被處理 可以在執行 exec() 之前呼叫 unset() 若是 return_var 跟 array 二個參數都存在 則執行 mand 之後的狀態會填入 return_var 中 值得注意的是若需要處理使用者輸入的資料 而又要防止使用者耍花招破解系統 則可以使用 EscapeShellCmd() 實例代碼

<?php echo exec( whoami ); ?> <? $fp = popen( "/bin/ls" "r" ); ?> lishixin/Article/program/PHP/201311/21017

⑸ 如何使用Linux的Crontab定時執行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 * * * * root /bin/sh
/usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh 和 /usr 間有空格。就這樣就設好了,還有一點要注意的是,你的sh文件和php文件都正確無誤。

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

linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1.
crontab
2.
cron.d
3.
cron.daily
4.
cron.hourly
5.
cron.monthly
6.
cron.weekly

如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab
或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh

2、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
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了

查看服務是否已經運行用 ps -ax | grep cron

3、crontab命令

查看該用戶下的crontab服務是否創建成功, 用 crontab -l
命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

crontab -u
//設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls
>> /tmp/ls.txt
任務調度的crond常駐命令crond
是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此
任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

crontab命令選項:

-u指定一個用戶

-l列出某個用戶的任務計劃

-r刪除某個用戶的任務

-e編輯某個用戶的任務

4、cron文件語法:


小時


星期
命令

0-59
0-23
1-31
1-12
0-6
command
(取值范圍,0表示周日一般一行對應一個任務)

記住幾個特殊符號的含義:

「*」代表取值范圍內的數字,

「/」代表」每」,

「-」代表從某個數字到某個數字,

「,」分開幾個離散的數字

5、任務調度設置文件的寫法

可用crontab
-e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件

具體格式如下:

Minute Hour Day Month Dayofweek
command

分鍾
小時


天每星期
命令

每個欄位代表的含義如下:

Minute
每個小時的第幾分鍾執行該任務

Hour
每天的第幾個小時執行該任務

Day
每月的第幾天執行該任務

Month
每年的第幾個月執行該任務

DayOfWeek
每周的第幾天執行該任務

Command
指定要執行的程序

在這些欄位里,除了「Command」是每次都必須指定的欄位以外,其它欄位皆為可選

欄位,可視需要決定。對於不指定的欄位,要用「*」來填補其位置。
舉例如下:

5
*
*
*
*
ls
指定每小時的第5分鍾執行一次ls命令

30
5
*
*
*
ls
指定每天的 5:30 執行ls命令

30
7
8
*
*
ls
指定每月8號的7:30分執行ls命令

30
5
8
6
*
ls
指定每年的6月8日5:30執行ls命令

30
6
*
*
0
ls
指定每星期日的6:30執行ls命令[註:0表示星期天,1表示星期1,

以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]

30
3
10,20
*
*
ls
每月10號及20號的3:30執行ls命令[註:「,」用來連接多個不連續的時段]

25
8-11
*
*
*
ls
每天8-11點的第25分鍾執行ls命令[註:「-」用來連接連續的時段]

*/15
*
*
*
*
ls
每15分鍾執行一次ls命令 [即每個小時的第0 15 30 45 60分鍾執行ls命令 ]

30
6
*/10
*
*
ls
每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls 命令。 ]

每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件

50
7
*
*
*
root
run-parts
/etc/cron.daily [
註:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]

6、 新增調度任務

新增調度任務可用兩種方法:

1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。

2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。

7、 查看調度任務

crontab -l //列出當前的所有調度任務

crontab -l -u jp
//列出用戶jp的所有調度任務

8、 刪除任務調度工作

crontab -r //刪除所有任務調度工作

9、 任務調度執行結果的轉向

例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中

30 5 * * * ls >/jp/test
2>&1

註:2>&1 表示執行結果及錯誤信息。

編輯/etc/crontab 文件配置cron

cron服務每分鍾不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次
/etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。

用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號

HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts

01
*
*
*
*
root run-parts
/etc/cron.hourly
//每小時執行/etc/cron.hourly內的腳本

02
4
*
*
*
root run-parts
/etc/cron.daily
//每天執行/etc/cron.daily內的腳本

22
4
*
*
0
root run-parts
/etc/cron.weekly
//每星期執行 /etc/cron.weekly內的腳本

42
4
1
*
*
root run-parts
/etc/cron.monthly
//每月去執行/etc/cron.monthly內的腳本
大家注意」run-parts」這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了

例如:

1) 在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。

2)直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務

11 2 21 10 * rm -rf /mnt/fb

⑹ linux 如何自動運行一個php文件

啟動crontab服務,編輯
crontab -e
把你要運行的php文件連路徑以及php命令一起寫入

⑺ 如何在linux上直接執行php命令

在 Linux 下執行 php 腳本時通常是可以使用以下命令:

1

#/usr/local/php/bin/php test.php

為簡化輸入可把此php執行程序 到系統命令目錄下:

1

#cp /usr/local/php/bin/php /usr/sbin/

驗證:輸入以下命令,如正確獲取 php 版本,說明操作成功。

1

#php -v

這樣,以後再執行PHP腳本時可直接採用以下輸入方式即可。

1

#php a.php

⑻ 如何讓php程序在linux下一直運行

Linux 伺服器上面,用 php 解釋器腳本方式運行你的 php 代碼。

網站的 php 代碼是被 web 伺服器調用的。這種調用都有對話時間的概念,除非你設置 web 伺服器永遠不超時(我記得這不可能),而且訪問時瀏覽器打開某個網頁後永遠不關閉,而且還要設置瀏覽器的超時是永遠不超市(當然這也不可能)。還要設置伺服器到你的計算機的所有中繼線路都不會因為超時而關掉你的數據對話(這似乎也更不可能),那麼你可以實現 web 伺服器網頁的 php 程序一直運行。

⑼ 如何用PHP語言執行linux自定義腳本

首先php進程的許可權要足夠高,然後使用 exec 命令執行提交的linux腳本就可以了。

閱讀全文

與php自動執行linux相關的資料

熱點內容
網易粘土伺服器怎麼開箱子 瀏覽:486
單片機軟體開發工程師 瀏覽:170
伺服器為什麼用lamp環境 瀏覽:377
財務分析pdf下載 瀏覽:291
做游戲如何不搭建伺服器 瀏覽:612
德國是什麼伺服器 瀏覽:551
javajar部署 瀏覽:269
android菜單顯示位置 瀏覽:529
大疆自拍是哪個app 瀏覽:188
pdf夢的解析 瀏覽:608
腳步聲優化命令聽不清 瀏覽:325
程序員三大罪怎麼玩 瀏覽:729
cad列印pdf設置 瀏覽:733
國產加密演算法價格 瀏覽:602
phpobjecttojson 瀏覽:695
pdf樣式 瀏覽:749
ssid加密協議 瀏覽:354
汝州市解壓去哪個車管所 瀏覽:546
小韓api源碼 瀏覽:281
php提取手機號 瀏覽:855