我看到其他帖子也有同样的问题,但我无法弄清楚,因为每个人都做不同的事情。我也是 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"