测试:返回太多参数

测试:返回太多参数

我看到其他帖子也有同样的问题,但我无法弄清楚,因为每个人都做不同的事情。我也是 shell 脚本的新手,所以当我阅读这些帖子时,我有限的知识变得更加困惑。

我让这个脚本在另一台服务器上运行得很好,但不知何故在新服务器上,我需要检查不同的服务名称,并且脚本返回上面的错误。我希望你能帮我指出我在这里做错了什么。

错误是: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

使用引号:

IE

if test "$pid"

相关内容