Impossibile arrestare i processi Apache


16

Aggiornamento: rispondendo al commento:

controlla i processi di 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

controllo registro errori 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

Originale: ho bloccato apache, ma perché ha ancora lo stesso numero di processi in esecuzione?

$ 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

Grazie!


(Mi dispiace non posso commentare perché non ho abbastanza rappresentante.) 1. Il web server è ancora disponibile con un browser web? 2. Controlla lo stato dei tuoi processi. Potrebbero essere diventati "Processi zombi" ps a | grep apache 3. Controlla i log degli errori, può essere utile tail /var/log/apache/error.log
SamK

1. Sto usando Firefox. È il mio laptop. 2 e 3 vedere il mio aggiornamento.
StackExchange per All

Hai provato questo 'apache2 -k stop' o un 'apache2 -k restart'? o un riavvio del sistema?
blade19899

Risposte:


27

Questo può accadere occasionalmente quando Apache rifiuta di fermarsi bene o ha Processi Zombi . Per il primo puoi uccidere tutti i processi in esecuzione con sudo killall -9 apache2; tuttavia, per quest'ultimo dovrai semplicemente aspettare che scompaiano. Nel caso in cui Apache non volesse fermarsi bene, quello che vorrai davvero fare è indagare su cosa sta succedendo. Tuttavia, scoprire esattamente cosa sta succedendo può essere difficile.

Un interattivo stracedell'ID processo può fornire un indizio su quali siti stanno agendo e causando problemi. Da quanto sopra ps -Apuoi controllare il primo processo con

strace -p 1663

Questo si collegherà alla traccia dello stack dei processi in esecuzione fornendo un output live di ciò che sta succedendo. In qualsiasi momento puoi Ctrl+C

Un'ulteriore risorsa è il registro degli errori principale per Apache che può essere trovato in /var/log/apache2/error.logSi vorrà ottenere un pezzo decente del registro e sfogliarlo per i dettagli. Se il problema è un problema in corso

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

Questo simile al straceverrà eseguito in tempo reale. Per le ultime N righe sostituire -fcon -#dove #è un numero positivo come 50, 100, 282, ecc.


7

Assicurati di disporre delle autorizzazioni appropriate per interrompere il servizio.

Se corri:

service apache2 stop

non otterrai alcun errore solo:

* Arresto del web server apache2

Provare:

sudo service apache2 stop      

quando non c'è abbastanza memoria o lo scambio è quasi pieno, questo fallirà, killall è l'unica soluzione
James Tan

3

Anch'io ho avuto lo stesso problema e ho provato quanto segue:

sudo apache2ctl stop

per interrompere il servizio e

sudo apache2ctl start

per ricominciare.

Funziona per me, eventuali suggerimenti sono ben accetti.



0

È possibile chiedere ai processi (inviando loro un segnale ) di interrompere. Il killcomando è un modo per farlo. Se si conosce l'ID processo (PID) del processo, è possibile richiederlo correttamente eseguendo il comando seguente in un terminale:

kill PID_OF_YOUR_PROCESS

L'esempio precedente invia al PID il segnale TERM predefinito (codice 15). Puoi cercare i codici dei segnali nella pagina man di kill ( man kill).

Quando il programma ignora il segnale TERM inviato loro, è ancora possibile applicare un po 'più di pressione inviando il segnale KILL (codice 9). Questo segnale viene utilizzato come ultima risorsa, poiché il processo potrebbe non salvare alcun dato non salvato.

Se si specifica a -SIGNAL_CODEcome primo parametro prima dell'ID processo, il processo verrà inviato al segnale specifico. Un'altra utile funzionalità del killcomando è che è possibile specificare più PID come nell'esempio seguente:

kill -9 PID1 PID2 PID3 PID4

Prova a terminare i processi Apache usando la kill -9linea. Dovrebbero fermarsi a meno che qualcosa non li impedisca.


Se il lettore non ha familiarità con il comando 'kill', non c'è quasi alcuna possibilità che sappiano come trovare il PID del processo apache2.
Max Barraclough,

0

Ho avuto lo stesso problema ma non puoi semplicemente eseguire un service apache2 stopcomando: devi eseguire un processo PER . Quindi, potresti voler aggiungere un sudofronte nel caso in cui tu abbia effettuato l'accesso a un account strano che ne abbia bisogno, quindi se vedi 9 processi in esecuzione, esegui 9sudo service apache2 stop

Ha funzionato alla grande per me.


-2

Dopo aver installato nginx il mio apache ha smesso di funzionare correttamente. Sembra in alcuni casi apache confuso con nginx. Rimuovi nginx

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.