1
這是我第一次進入shell腳本,因此如果我提出一個非常基本的問題,請對我溫柔!從cron運行時,無法從shell腳本訪問for循環的代碼
我有一個shell腳本通過FTP下載文件,使用拆分將文件分解成單獨的較小文件。然後我使用for循環來調用一個PHP文件,該文件對文件進行一些處理,這個PHP進程在後臺運行完成。
這兩個腳本組合在sudo下的命令行運行正常,但是當它從cron運行時,我似乎無法獲得文件名值傳入PHP。
我2個測試腳本如下
shell-test.sh
#!/bin/bash
cd /path/to/directory/containing/split/files/
#Split the file into seperate 80k line files
split -l 80000 /path/to/file/needing/to/be/split/
#Get the current epoch time as all scripts will need to use the same update time
epochtime=$(date +"%s")
echo $epochtime
#Output a list of the files in the directory
ls
#For loop to run through each file in the working directory
#For each file we run the php script with safe mode off (to enable access to includes)
#We pass in the name of the file and epochtime
#The ampersand at the end of the string runs the file in the background in parallel so that all scripts execute concurrently
for file in *
do
php -d safe_mode=Off /path/to/php/script/shell-test.php -f $file -t $epochtime &
done
#Wait for all scripts to finish
wait
殼test.php的
<?php
$scriptOptions = getopt("f:t:");
print_r($scriptOptions);
?>
當從命令行運行輸出作爲以下我需要什麼 - 將文件值傳遞給PHP腳本。
1319824758
xaa xab xac xad
Array
(
[f] => xaa
[t] => 1319824758
)
Array
(
[f] => xac
[t] => 1319824758
)
Array
(
[f] => xad
[t] => 1319824758
)
Array
(
[f] => xab
[t] => 1319824758
)
然而,當通過cron是輸出
1319825522
xaa
xab
xac
xad
Array
(
[f] => *
[t] => 1319825522
)
下運行因此,我需要知道的是如何得到的值*作爲文件名,而不是實際的字符串*(以及爲什麼發生這種情況也會有用!)。
偉大的作品 - 非常感謝!將不得不閱讀使用此選項更改運行cron的影響。有人可以推薦一個體面的資源爲這個特定主題的相對noob? – Sagaris