Linux

測試:返回的參數太多

  • March 5, 2020

我看到其他文章同樣的問題,但我無法弄清楚,因為每個人都做不同的事情。我也是 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

似乎您有很多 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

引用自:https://unix.stackexchange.com/questions/571354