같은 문제가 있는 다른 게시물을 본 적이 있지만 사람마다 다르기 때문에 알아낼 수 없습니다. 나는 또한 쉘 스크립팅에 익숙하지 않기 때문에 이 게시물을 읽으면서 제한된 지식이 더욱 혼란스러워졌습니다.
이 스크립트가 다른 서버에서 제대로 실행되고 있지만 어떻게든 새 서버에서 다른 서비스 이름을 확인해야 하고 스크립트가 위의 오류를 반환합니다. 내가 여기서 뭘 잘못하고 있는지 지적하는 데 도움이 되길 바랍니다.
오류는 다음과 같습니다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"