2012-02-19 35 views
5

我正在写一个bash文件。我需要从我的bash文件中启动apachectl。所以我写了:从bash启动apachectl

apachectl start 

当我用root运行它,发生了错误:

apachectl: command not found 

我搜索,我发现,我应该是超级用户su -没有su

现在,我想知道:

  • 为何发生此错误?

  • 我怎么能运行它与su

+2

它看起来像'apachectl'是不是在你的路径。尝试'find/-name apachectl'。 – cnicutar 2012-02-19 09:48:30

+0

是的,谢谢,它在/ usr/sbin /中,所以谢谢! – 2012-02-19 09:57:31

回答

4

找不到命令错误是因为“apachectl”不在您的路径中。只需使用该命令的完整路径,例如

/etc/init.d/apachectl开始

如果你得到一个权限被拒绝的错误,那么你需要为不同的用户运行。但这是一个不同的问题。

11

在shell脚本中,除非目录的可执行文件已经在$ PATH中,否则您应该使用完整路径来执行命令。 例如,发现那里的apachectl二进制文件位于:

which apachectl 

whereis apachectl 

,你会得到这样的:

/usr/local/sbin/apachectl 

因此,利用这一点。

2

看来,命令apachectl不在您的环境路径中。找到apachectl所在的目录,并将其添加到您的PATH或使用完整路径启动它。大多数现代发行版使用sudo来允许用户获得提升的权利,所以如果可以的话,您应该使用sudo

3

使用find命令首先找到apachecetl

find/-name apachectl 

然后你就可以运行状态命令来测试它(假设这是从find命令的位置)

/usr/local/sbin/apachectl status 

,那么你可能需要重新启动Apache如果有问题

/usr/local/apache/bin/apachectl restart 
0

首先杀死所有的httpd服务使用...

sudo killall -9 httpd 

其次,找到apachectl。按ctrl + r进入终端输入“apachectl”单词查找“apachectl”的路径。

之后选择:

sudo <path>/apachectl stop|start 
+0

启动apache sudo服务后启动httpd – diegohsi 2016-02-24 12:34:11