我正在写一个bash文件。我需要从我的bash文件中启动 apachectl
。所以我写道:
apachectl start
当我用root运行它时,发生了错误:
apachectl: command not found
我搜索了一下,我发现,我应该超级用户 su -
而不是su
现在,我想知道:
为什么会出现此错误?
如何使用su
运行它?
答案 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的下一个命令:
如果您想了解8080端口,请使用下一个命令:
在我的情况下是运行lighttpd,因此请应用下一个命令: