2014-01-10 97 views
0

擊等待信號以結束bash腳本不會開始與後執行命令化背景

邏輯:bash腳本的

  1. 起動執行必須在回地面開始a.php只會和將stdout 日誌文件或/ dev /上a.php只會成功執行空
  2. B.php
  3. 誤差與a.php只會錯誤執行B.php作爲參數

但是,慶典開始a.php只會等待...

#ps -aux 
root  27647 0.0 0.0 13336 652 pts/0 S+ 11:36 0:00 /bin/bash /var/www/scripts/bgluncher.sh -c php /var/scripts/A.php -l /var/log/A.log -p B.php 
root  27648 0.7 0.2 332396 87544 pts/0 S+ 11:36 0:02 php /var/scripts/A.php 

慶典:

#!/bin/bash 
COMM='' 
POST_CMD='' 
LOG=0 

while getopts ":l:c:p:" arg; do 
    case "${arg}" in 
     c) 
      COMM=${OPTARG} 
      ;; 
     l) 
      LOG=1 
      LOG_File=${OPTARG} 
      ;; 
     p) 
      POST_CMD=${OPTARG} 
      ;; 
    esac 
done 

if [ -z "${COMM}" ]; then 
    echo `date` ' ERROR: [bgluncher.sh] -c argument is empty ' >> ${LOG_File} 
else 
    if [ ${LOG} -eq 1 ] ; then 
     ${COMM} >> ${LOG_File} && ${POST_CMD} || ${POST_CMD}/error=$2 & 
     echo $! 
    else 
     ${COMM} >> /dev/null && ${POST_CMD} || ${POST_CMD}/error=$2 & 
     echo $! 
    fi 
fi 

exit 

生存還是毀滅,什麼錯誤我已經取得?

回答

0

$2是第二個命令行參數(php),而不是COMM的退出代碼,請使用$?。 您可能需要一個空間而不是$ {POST_CMD}後面的/; B.php error=2而不是B.php/error=2

+0

好的! 謝謝! 這是「$?」問題之一 其實PHP腳本等待/ arg1 = val1/arg2 = val2。 但bash仍在等待結束A.php並且不要在後臺發送它 – Debster