Я хотел бы иметь одну команду, которая будет перезапускать 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