Кроссплатформенный перезапуск Apache

Кроссплатформенный перезапуск Apache

Я хотел бы иметь одну команду, которая будет перезапускать Apache на любой *nix OS. В настоящее время я работаю с Ubuntu, в которой есть

  • /usr/sbin/apache2ctl
  • /usr/sbin/service
  • нетapachectl
  • нетhttpd

и Scientific Linux CERN 5, который имеет

  • /usr/sbin/apachectl
  • /etc/init.d/httpd
  • нетapache2ctl
  • нетservice

Я бы хотел избежать использования такого хака, какwhich service 2>/dev/null || which /etc/init.d/httpd

решение1

apachectl / apache2ctl — это встроенный в Apache инструмент для управления Apache, вероятно, это правильный инструмент для использования в вашем случае, поскольку он поставляется с Apache, он будет присутствовать во всех ОС.
apachectl обычно используется для Apache 1.x, а apache2ctl — для Apache 2.x.
Если SLC5 поставляется с Apache 2.x, это довольно странно, но вы можете запустить и apachectl, и apache2ctl в своем скрипте.

решение2

Вы можете использовать скрипт, который проверяет, какой apachectl установлен, а затем запустить соответствующий.

#!/bin/bash

if [ -e /usr/sbin/apacche2ctl ]
then
    /usr/sbin/apache2ctl restart
elif [ -e /usr/sbin/apachectl ]
then
    /usr/sbin/apachectl restart
else
    echo "No Apache control program found"
fi

Связанный контент