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