0
#!/bin/bash
# Apache Process Monitor
# Restart Apache Web Server When It Goes Down
# -------------------------------------------------------------------------
# Copyright (c) 2003 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
# RHEL / CentOS / Fedora Linux restart command
RESTART="/sbin/service httpd restart" 
# uncomment if you are using Debian / Ubuntu Linux
#RESTART="/etc/init.d/apache2 restart" 
#path to pgrep command
PGREP="pgrep"
# Httpd daemon name,
# Under RHEL/CentOS/Fedora it is httpd
# Under Debian 4.x it is apache2
HTTPD="httpd"
# find httpd pid
$PGREP ${HTTPD}
if [ $? -ne 0 ] # if apache not running
then
# restart apache
$RESTART
fi
exit

这是我的脚本。当我运行它时,我得到:命令未找到/apache_start.sh:第 12 行::命令未找到/apache_start.sh:第 22 行:pgrep /usr/local/apache/bin/apache_start.sh:第 29 行:语法错误:文件意外结束

我犯了什么错误。如果有人回答我,我会很高兴。

4

1 回答 1

0

伙计,我运行了你的脚本,除了 $PGREP ${HTTPD} 部分之外它工作正常,如果你想获得一个 pid 为什么不使用“pidof”命令,我认为在你的 if 语句中你正在测试返回grep 的值,而不是 httpd 命令(不确定)。
无论如何,您是否在 Word 文档或编辑器中编辑了此脚本,因为您知道这可能会在您的代码中添加一些不可见的字符。
要对其进行调试,我建议您将出现第一个错误的其余代码注释掉,并找出解决该特定错误的方法。

于 2013-08-16T04:50:38.003 回答