执行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 "";
    }else{
        echo "";
    }
}

 

你可能感兴趣的:(Linux)