从bash开始apachectl

时间:2012-02-19 09:45:45

标签: linux apache bash

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

apachectl start

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

apachectl: command not found

我搜索了一下,我发现,我应该超级用户 su -而不是su

现在,我想知道:

  • 为什么会出现此错误?

  • 如何使用su运行它?

8 个答案:

答案 0 :(得分:15)

在shell脚本中,除了$ PATH中已存在可执行文件的目录外,您应该使用完整路径来执行命令。 例如,找到apachectl二进制文件所在的位置:

which apachectl

whereis apachectl

你会得到类似的东西:

/usr/local/sbin/apachectl

所以,请使用它。

答案 1 :(得分:7)

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

  

/etc/init.d/apachectl start

如果您收到权限被拒绝错误,则需要以其他用户身份运行。但这是一个不同的问题。

答案 2 :(得分:3)

使用find命令首先找到apachecetl

find / -name apachectl

然后你可以通过运行status命令来测试它(假设这是find命令的位置)

/usr/local/sbin/apachectl status

如果出现问题,您可能需要重启apache

/usr/local/apache/bin/apachectl restart

答案 3 :(得分:2)

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

答案 4 :(得分:1)

以下命令对我有用:

sudo / usr / sbin / apachectl -kstart

答案 5 :(得分:0)

首先使用...

终止所有httpd服务
sudo killall -9 httpd

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

选择后:

sudo <path>/apachectl stop|start

答案 6 :(得分:0)

上面的答案对我帮助很大,但命令应该是:

sudo netstat -tanp
sudo ss -tanp 'sport = 80'
sudo apt-get remove lighttpd
sudo <path>/apachectl -kstart

答案 7 :(得分:-1)

好吧,这就是为什么您现在要使用其他服务的原因。因为你知道

服务用于使用netstat的下一个命令:

  • sudo netstat -tanp。

如果您想了解8080端口,请使用下一个命令:

  • trong textsudo ss -ntlp'sport = 80'。

在我的情况下是运行lighttpd,因此请应用下一个命令:

  • sudo apt-get删除lighttpd。