如果 Apache 服务器尚未运行,如何运行它

如果 Apache 服务器尚未运行,如何运行它

我想知道是否可以检查 apache2 是否正在运行。如果它没有运行,我想使用 shellscript 执行它

目前,我添加了一个名为 run_apache 的函数,它只是转到 apache2 启动的目录。我已将此函数添加到我的.bashrc文件中。但是,每次我打开新 shell 时它都会执行,除非 apache2 尚未运行,否则我不想这样做。

答案1

您可以apache2通过启动

/etc/init.d/apache2 status

这将输出下列之一:

Apache2 is NOT running.
Apache2 is running (pid 10281).

它还会给你一个有效的返回状态,你可以在 shell 脚本中使用它(并使用 丢弃其正常输出> /dev/null):

if /etc/init.d/apache2 status > /dev/null;
then echo "Apache already running";
else echo "Apache not running";
fi

我应该补充一点,在 Apache 已经运行时尝试启动它不会造成任何损害。因此/etc/init.d/apache2 start只需说:

Starting web server: apache2httpd (pid 10281) already running

答案2

好吧,我知道已经太晚了,但有人可能需要它。我使用带有 consoleZ 的 cygwin。

  1. 首先,打开 .bash_aliases 文件并添加以下行 alias apacheup='cygstart --hide /g/xampp/apache_start.bat' alias apachedown='cygstart --hide /g/xampp/apache_stop.bat' alias mysqlup='cygstart --hide /g/xampp/mysql_start.bat' alias mysqldown='cygstart --hide /g/xampp/mysql_stop.bat' alias webup='apacheup && mysqlup' alias webdown='apachedown && mysqldown' alias webrestart='apachedown && mysqldown && apacheup && mysqlup'
  2. 其次,在 .bash_functions 中复制此函数 webstat() { red='\e[0;41m' green='\e[0;42m' NC='\e[0m' # No Color if [[ -n $(ps aux -W | grep httpd.exe) ]]; then echo -e "Apache:\t"${green}" RUNNING "${NC} else echo -e "Apache:\t"${red}" STOPPED "${NC} fi if [[ -n $(ps aux -W | grep mysqld.exe) ]]; then echo -e "MySQL:\t"${green}" RUNNING "${NC} else echo -e "MySQL:\t"${red}" STOPPED "${NC} fi }

答案3

您只需将 Apache 启动命令添加到系统/etc/rc.local文件中,该命令将在启动过程的最后运行它。

不需要检查它是否正在运行,因为理论上它应该保持运行。

相关内容