这是脚本,但即使Apache正在运行show stop,输出也是错误的。我正在使用Ubuntu 12.04。
ssh -qn root@ ip
if ps aux | grep [h]ttpd > /dev/null
then
echo "Apcache is running"
else
echo "Apcahe is not running"
fi
答案 0 :(得分:3)
尝试以下方法:
if ssh -qn root@ip pidof httpd &>/dev/null ; then
echo "Apache is running";
exit 0;
else
echo "Apache is not running";
exit 1;
fi
这些exit
命令也会发送正确的 EXIT_SUCCESS 和 EXIT_FAILURE (如果需要,将来有助于扩展此脚本)。
但是一个建议:最好将脚本作为远程进程与ssh帐户上的sudoer用户一起运行
答案 1 :(得分:1)
您没有在远程主机上运行命令。
试试这个。
if ssh -qn root@ip ps aux | grep -q httpd; then
echo "Apache is running"
else
echo "Apache is not running"
fi
为了明确,ps aux
是ssh
的参数,因此这是在远程主机上执行的内容。 grep
作为本地脚本的子项运行。
答案 2 :(得分:0)
首先,httpd在ubuntu中不可用。对于ubuntu,apache2可用。
所以这个命令ps aux | grep [h]ttpd
不适用于ubuntu。
无需编写任何脚本来检查apache状态。从ubuntu终端运行此命令以获取状态:
sudo service apache2 status
输出将是:
A>如果apache正在运行:Apache2 is running (pid 1234)
B>如果apache没有运行:Apache2 is NOT running.
答案 3 :(得分:0)
由于 ssh返回远程命令的退出状态,请检查ssh的手册页并搜索退出状态
所以它就像
一样简单ssh root@ip "/etc/init.d/apache2 status"
if [ $? -ne 0 ]; then # if service is running exit status is 0 for "/etc/init.d/apache2 status"
echo "Apache is not running"
else
echo "Apache is running"
fi
这个
你不需要ps或grep