0

cgi スクリプトを実行していますが、cgi スクリプトがコマンドのすべての出力を待機していないという問題があります。

cgi スクリプトは次のとおりです。

#!/bin/bash
echo Content-type: text/plain
echo ""

case "$QUERY_STRING" in
  start)
    service servicename start
    ;;
  stop)
    service servicename stop
    ;;
  restart)
    service servicename restart
    ;;
  backup)
    service servicename backup
    ;;
  checkisup)
    service servicenamet checkisup
    ;;
  status)
    service servicename status
    ;;
  *)
  echo "Usage: $0 {checkisup|start|stop|restart|backup|status|restart}"
  exit 1
  ;;
esac

exit 0

でステータスを呼び出すとscript.cgi?status

私のサービスからステータス関数を実行します

  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    pre_log_len=`wc -l "$PATH/server.log" | awk '{print $1}'`
    echo "$SERVICE is running... executing command"
    as_user "screen -p 0 -S screenname -X eval 'stuff \"$command\"\015'"
    sleep .1
    tail -n $[`wc -l "$PATH/server.log" | awk '{print $1}'`-$pre_log_len] "$PATH/server.log"
  fi

私が問題を抱えている部分は、関数がsleep .1cgi スクリプトに到達したときに、tall の出力を待たずに続行することです。

何か案は?

4

1 に答える 1

1

引数tailの演算の結果が 0 になる可能性があるため、からの出力が表示されない場合があります。-n

anew@Wintermute:work$ wc -l dev-configuration.json 
     105 dev-configuration.json
anew@Wintermute:work$ tail -n 0 dev-configuration.json 
anew@Wintermute:work$ 
于 2013-02-03T04:43:46.203 に答える