執行shell腳本命令壓縮打包圖片並下載一直報 錯誤碼 2 阿星小棧

話在之前:最近寫了一個腳本,遍歷文件夾獲取圖片,並新建文件夾後打包,再刪除新建文件夾。本地測試完全沒有問題,

但是~~~提到服務器上後腳本一直執行不了,打出執行結果  退出錯誤狀態碼 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>";
    }
}

 

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