从bash开始apachectl

Beh*_*ari 7 linux apache bash

我正在写一个bash文件.我需要apachectl从我的bash文件开始.所以我写道:

apachectl start
Run Code Online (Sandbox Code Playgroud)

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

apachectl: command not found
Run Code Online (Sandbox Code Playgroud)

我搜索过,我发现,我应该是超级用户su -不是su

现在,我想知道:

  • 为什么发生这个错误?

  • 我该su怎么办呢?

tar*_*aro 16

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

which apachectl
Run Code Online (Sandbox Code Playgroud)

要么

whereis apachectl
Run Code Online (Sandbox Code Playgroud)

你会得到类似的东西:

/usr/local/sbin/apachectl
Run Code Online (Sandbox Code Playgroud)

所以,使用它.


Res*_*ath 7

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

/etc/init.d/apachectl start

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


Jay*_*son 5

使用find命令首先定位apachecetl

find / -name apachectl
Run Code Online (Sandbox Code Playgroud)

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

/usr/local/sbin/apachectl status
Run Code Online (Sandbox Code Playgroud)

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

/usr/local/apache/bin/apachectl restart
Run Code Online (Sandbox Code Playgroud)