명령 출력을 필터링하고 로그로 보내는 init.d 스크립트

명령 출력을 필터링하고 로그로 보내는 init.d 스크립트

/home/michael/clientstdout을 기록하고 싶지만 다양한 텍스트가 포함된 줄을 제거하고 싶습니다. 이것이 어떻게 달성됩니까? 내가 시도한 것은 다음과 같습니다. 감사해요

SCRIPT=/home/michael/client
RUNAS=michael
PIDFILE=/var/run/client.pid
LOGFILE=/var/log/client.log
PROG="Client Interface"

start() {
  if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then
    echo "$PROG already running" >&2
    return 1
  fi
  echo "Starting $PROG…" >&2
  local CMD="$SCRIPT   >&3 2>&1 & echo \$!"
  #local CMD="$SCRIPT  | grep -v 'Non-block' | grep -v 'Connecting with ssl...' >&3 2>&1 & echo \$!"
  cd `dirname $SCRIPT`
  su -c "$CMD" $RUNAS  3>>"$LOGFILE" >"$PIDFILE"
  #su -c "$CMD" $RUNAS  | grep -v "Non-block" | grep -v "Connecting with ssl..." 3>> "$LOGFILE" >"$PIDFILE"
  #su -c "$CMD" $RUNAS  3>> grep -v "Non-block" | grep -v "Connecting with ssl..." | "$LOGFILE" >"$PIDFILE"
  echo "$PROG started" >&2
}

답변1

"분열하고 정복하라"

  1. 작업을 완료하기 위해 간단한 bash 스크립트를 작성할 수 있습니까?

  2. 그럼 시도해봐

  3. 그럼 시도해봐북면

  4. 마지막으로 init.d 스크립트로 실행해 보세요.

관련 정보