我想知道是否可以检查 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。
-
首先,打开 .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'
- 其次,在 .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
文件中,该命令将在启动过程的最后运行它。
不需要检查它是否正在运行,因为理论上它应该保持运行。