同じ問題を抱えている他の投稿を見たことがありますが、人によって異なるため、理解できません。私もシェルスクリプトに慣れていないので、この記事を読んで、限られた知識がさらに混乱しました。
このスクリプトは他のサーバーで正しく実行されていますが、どういうわけか新しいサーバーで別のサービス名を解決する必要があり、スクリプトは上記のエラーを返します。私がここで何が間違っているかを指摘するのに役立つことを願っています。
エラーは次のとおりです。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"