Primeiramente, você parece ter o e comercial no lugar errado. Em vez de
/path/to/httpd -f /path/to/config < /dev/null >& /dev/null
Eu esperaria
/path/to/httpd -f /path/to/config < /dev/null > /dev/null &
EDIT - na verdade, command >& file
é uma forma abreviada de command > file 2>&1
. Eu nunca usei a forma curta, então eu entendi mal a intenção dessa construção.
Mas eu não faria isso. Redirecionar STDIN e STDOUt para / dev / null está errado. Omitir STDERR também está errado. Fazer isso para programar o que se coloca no modo daemon está errado. Se você realmente tivesse que fazer isso, eu faria algo como
nohup /path/to/httpd -f /path/to/config >/tmp/httpd.out 2>/tmp/httpd.err &
Mas aguarde, o Apache pode ser reiniciado enviando sinais usando o script apachectl
. Você pode sinalizar ao Apache para recarregar sua configuração sem deixar as conexões existentes ou você pode sinalizá-lo para reiniciar novamente. Se tudo o que você está fazendo é mudar sua configuração, basta fazer um relançamento gracioso. Eu também usaria apachectl
para fazer um configtest
.
Se o Apache estiver em um local fora do padrão, você ainda poderá usar o apachectl.
Se você não pode usar o apachectl, pode enviar sinais SIGUSR1 (recarregar) ou SIGHUP (reiniciar) para o processo principal do httpd.
Se o apache não estiver sendo executado, a melhor maneira de iniciá-lo é usando o script /etc/init.d/apache start
Se o apachectl e os scripts de inicialização não funcionarem porque você mudou os programas, eu os editaria, há variáveis que dizem em quais diretórios os executáveis estão.