No poder detener los procesos de Apache

16

Actualización: respondiendo al comentario:

verificar procesos de apache:

$ ps a | grep apache 3
grep: 3: No such file or directory
$ ps a | grep apache
 4514 pts/0    S+     0:00 grep --color=auto apache
$ ps a | grep apache2
 4516 pts/0    S+     0:00 grep --color=auto apache2

comprobación del registro de errores de apache

$ tail /var/log/apache2/error.log
[Sun Aug 07 03:14:19 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 03:13:58 2011] [notice] Graceful restart requested, doing restart
[Mon Aug 08 03:14:00 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 09:03:16 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 08 09:05:47 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations

Original: he detenido Apache, pero ¿por qué todavía tiene la misma cantidad de procesos en ejecución?

$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2
$ /etc/init.d/apache2 stop
 * Stopping web server apache2                            [ OK ] 
$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2

¡Gracias!

StackExchange para todos
fuente
(Lo siento, no puedo comentar porque no tengo suficiente representante). 1. ¿El servidor web todavía está disponible con un navegador web? 2. Verifique el estado de sus procesos. Puede que se hayan convertido en "procesos zombis" ps a | grep apache 3. Compruebe los registros de errores, puede ser útil la cola /var/log/apache/error.log
SamK
1. Estoy usando firefox. Es mi laptop 2 y 3 ven mi actualización.
StackExchange for All
¿Has probado este 'apache2 -k stop' o un 'apache2 -k restart'? o un reinicio de su sistema?
blade19899

Respuestas:

27

Esto puede suceder ocasionalmente cuando Apache se niega a detenerse bien o tiene procesos de zombis . Para el primero puede matar todos los procesos en ejecución con sudo killall -9 apache2; Sin embargo, para este último, simplemente tendrá que esperar a que desaparezcan. En el caso de que Apache no quiera detenerse amablemente, lo que realmente querrá hacer es investigar lo que está sucediendo. Sin embargo, descubrir exactamente lo que está sucediendo puede ser difícil.

Una straceidentificación interactiva del proceso puede dar una idea de qué sitio (s) están actuando y causando problemas. Desde lo anterior ps -Apuede verificar el primer proceso con

strace -p 1663

Esto se adjuntará al seguimiento de la pila de procesos en ejecución que proporciona una salida en vivo de lo que está sucediendo. En cualquier momento puedes Ctrl+C

Un recurso adicional es el registro de errores principal para Apache, que se puede encontrar en /var/log/apache2/error.logQuerrá obtener una porción decente del registro y hojearlo para obtener más detalles. Si el problema es un problema continuo en ejecución

tail -f /var/log/apache2/error.log

Esto es similar a lo que stracese ejecutará en tiempo real. Para las últimas N líneas, reemplace -fcon -#donde el #es un número positivo como 50, 100, 282, etc.

Marco Ceppi
fuente
7

Asegúrese de tener los permisos adecuados para detener el servicio.

Si tu corres:

service apache2 stop

no obtendrá ningún error solo:

* Detención del servidor web apache2

Tratar:

sudo service apache2 stop      
jeremyforan
fuente
cuando no hay suficiente memoria o intercambio casi lleno, esto fallará, killall es la única solución
James Tan
3

Yo también tuve el mismo problema e intenté lo siguiente:

sudo apache2ctl stop

para detener el servicio, y

sudo apache2ctl start

para comenzar de nuevo.

A mí me funciona, cualquier sugerencia posible es bienvenida.

Rudhin
fuente
1

El comando systemctl stop apache2funcionó para mí.

IMTHATGUY P
fuente
0

Se puede pedir a los procesos (enviándoles una señal ) que se detengan. El killcomando es una forma de hacerlo. Si conoce el ID de proceso (PID) del proceso, se puede preguntar muy bien ejecutando el siguiente comando en un terminal:

kill PID_OF_YOUR_PROCESS

El ejemplo anterior envía al PID la señal TERM predeterminada (código 15). Puede buscar los códigos de señal en la página de manual de kill ( man kill).

Cuando el programa ignora la señal TERM que se les envía, aún es posible aplicar un poco más de presión enviando la señal KILL (código 9). Esta señal se utiliza como último recurso, ya que el proceso podría no guardar ningún dato no guardado.

Especificar a -SIGNAL_CODEcomo primer parámetro antes de la ID del proceso enviará al proceso la señal específica. Otra característica útil del killcomando es que puede especificar más PID como en el siguiente ejemplo:

kill -9 PID1 PID2 PID3 PID4

Intente terminar los procesos de Apache utilizando la kill -9línea. Deben detenerse a menos que algo les impida hacerlo.

Sean Kimball
fuente
Si el lector no está familiarizado con el comando 'kill', casi no hay posibilidad de que sepan cómo encontrar el PID del proceso apache2.
Max Barraclough
0

Tuve el mismo problema, pero no puedes hacer un solo service apache2 stopcomando: tienes que hacer un proceso PER . Luego, PUEDE querer agregar un sudofrente solo en caso de que haya iniciado sesión en alguna cuenta extraña que lo necesite, por lo que si ve 9 procesos en ejecución, haga 9sudo service apache2 stop

Funcionó muy bien para mí.

Peter
fuente
-2

Después de instalar nginx, mi apache dejó de funcionar correctamente. Parece en algunos casos apache confuso con nginx. Simplemente elimine nginx

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
Manvel
fuente