テスト:多すぎるパラメータを返しました

テスト:多すぎるパラメータを返しました

同じ問題を抱えている他の投稿を見たことがありますが、人によって異なるため、理解できません。私もシェルスクリプトに慣れていないので、この記事を読んで、限られた知識がさらに混乱しました。

このスクリプトは他のサーバーで正しく実行されていますが、どういうわけか新しいサーバーで別のサービス名を解決する必要があり、スクリプトは上記のエラーを返します。私がここで何が間違っているかを指摘するのに役立つことを願っています。

エラーは次のとおりです。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"

関連情報