話在之前:最近寫了一個腳本,遍歷文件夾獲取圖片,並新建文件夾後打包,再刪除新建文件夾。本地測試完全沒有問題,
但是~~~提到服務器上後腳本一直執行不了,打出執行結果 退出錯誤狀態碼 2 , 各種改 一直不成功 最後靈光一閃
biu ~
解決辦法: 在服務器新建空腳本文件 粘貼代碼進去 保存 運行 成功 perfect ~
因爲不同系統生成的文件格式 有可能不能被識別
腳本包含: 1.腳本接收參數(getopts)
2.linux命令獲取當前時間(`date +%Y%m%d%H%M%S`)
3.獲取文件最後修改時間時間戳(`stat -c %Y $dir_or_file`)
4.判斷是否是文件夾( [ -d $dir_or_file ] )
5.判斷文件夾是否爲空( [ "`ls -A $dir_or_file`" = "" ] )
6.時間做比較( [ $filetime -gt $starttime ] )
endtime=`date +%Y%m%d%H%M%S`
while getopts ":t:s:e:b:k:" opt
do
case $opt in
s)
starttime=$OPTARG
;;
e)
endtime=$OPTARG
;;
b)
savedir=$OPTARG
;;
k)
scandir=$OPTARG
;;
t)
tiptime=$OPTARG
;;
esac
done
cd $savedir
mkdir $savedir$endtime
function getdir(){
for element in `ls $1`
do
dir_or_file=$1"/"$element
if [ -d $dir_or_file ]
then
mkdir $savedir$endtime"/"$element
getdir $dir_or_file
else
destdir=${1##*/}
suffix=${element##*-}
suffixret=${suffix%%.*}
filetime=`stat -c %Y $dir_or_file`
if [[ $suffixret != 'lp' ]]
then
if [ $filetime -gt $starttime ]
then
cp $dir_or_file $savedir$endtime"/"$destdir
fi
fi
fi
done
}
checkempty(){
for element in `ls $1`
do
dir_or_file=$1"/"$element
if [ -d $dir_or_file ]
then
if [ "`ls -A $dir_or_file`" = "" ]
then
rm -rf $dir_or_file
fi
else
rm -rf $dir_or_file
fi
done
}
getdir $scandir
checkempty $scandir
filename="$endtime.zip"
zip -r ${filename} ${endtime}
rm -rf $endtime
`date +%Y%m%d%H%M%S` : 獲取當前時間 20190117173310
`stat -c %Y $dir_or_file` : 獲取文件修改時間戳 3545792459
-gt : 比較大小判斷符號 >
執行腳本的PHP代碼
$DEDEROOT = '/data/www/default';
$filedir=$DEDEROOT."/";
$savedir=$DEDEROOT."/uploads/";
$scandir=$DEDEROOT."/uploads/userup/";
$shell = $DEDEROOT."/script/test.sh -t $tipTime -s $startTime -e $endtTime -b $savedir -k $scandir";
exec($shell, $result, $status);
if( $status ){
echo "命令失敗,錯誤狀態碼".$status;exit;
}else{
//判斷如果文件存在,則跳轉到下載路徑
$down_host = $_SERVER['HTTP_HOST'].'/'; //當前域名
if(file_exists($savedir.$endtTime.'.zip')){
$dsql->ExecuteNonequery($query);
echo "<script>alert('操作成功');window.history.go(-1)</script>";
}else{
echo "<script>alert('".$down_host."uploads/".$endtTime.".zip 404 Not Found');window.location='" . $down_host.'Manage/'. "';</script>";
}
}