테스트: 너무 많은 매개변수를 반환함

테스트: 너무 많은 매개변수를 반환함

같은 문제가 있는 다른 게시물을 본 적이 있지만 사람마다 다르기 때문에 알아낼 수 없습니다. 나는 또한 쉘 스크립팅에 익숙하지 않기 때문에 이 게시물을 읽으면서 제한된 지식이 더욱 혼란스러워졌습니다.

이 스크립트가 다른 서버에서 제대로 실행되고 있지만 어떻게든 새 서버에서 다른 서비스 이름을 확인해야 하고 스크립트가 위의 오류를 반환합니다. 내가 여기서 뭘 잘못하고 있는지 지적하는 데 도움이 되길 바랍니다.

오류는 다음과 같습니다line 9: test: too many arguments

스크립트는 다음과 같습니다.

#!/usr/bin/bash

GREEN=0
YELLOW=1
RED=2

pid=`/bin/ps -eo fname,pid | /usr/bin/awk '{if ($1 == "sshd") print $2}'`

if test $pid
then
        message="sshd Server is running. PID: $pid"
        status=$GREEN
else
        message="sshd Server is stopped."
        status=$RED
fi
echo $message
exit $status

답변1

SSH 연결이 많은 것 같습니다 ...

이 시도,

#!/usr/bin/bash

GREEN=0
YELLOW=1
RED=2

pid=(`/bin/ps -eo fname,pid | /usr/bin/awk '{ if ($4 == "abc") print $2}'`)

if  [ ${#pid[@]} -gt 0 ]
then
        message="sshd Server is running. PID: ${pid[@]}"
        status=$GREEN
else
        message="sshd Server is stopped."
        status=$RED
fi
echo $message
exit $status

SSH 서비스의 PID만 원할 경우 다음을 시도하십시오.

#!/usr/bin/bash

GREEN=0
YELLOW=1
RED=2

pid=`cat /var/run/sshd.pid`
if test $pid
then
        message="sshd Server is running. PID: $pid"
        status=$GREEN
else
        message="sshd Server is stopped."
        status=$RED
fi
echo $message
exit $status

답변2

따옴표 사용:

if test "$pid"

관련 정보