Aktualizacja: W odpowiedzi na komentarz:
sprawdź procesy 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
sprawdzanie dziennika błędów 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
Oryginał: zatrzymałem apache, ale dlaczego nadal działa ta sama liczba uruchomionych procesów?
$ 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
Dzięki!
Odpowiedzi:
Może się to zdarzać czasami, gdy Apache odmawia dobrego zatrzymania lub ma Procesy Zombie . W przypadku tego pierwszego możesz zabić wszystkie uruchomione procesy
sudo killall -9 apache2
; jednak w przypadku tych ostatnich wystarczy poczekać, aż odejdą. W przypadku, gdy Apache nie chce ładnie przestać, naprawdę będziesz chciał zbadać, co się dzieje. Dokładne ustalenie, co się dzieje, może być trudne.Interaktywny
strace
identyfikator procesu może dać wskazówkę, które strony działają i powodują problemy. Z powyższegops -A
możesz sprawdzić pierwszy proces za pomocąSpowoduje to dołączenie do śledzenia stosu uruchomionych procesów, zapewniając bieżący wynik tego, co się dzieje. W dowolnym momencie możesz Ctrl+C
Dodatkowym zasobem jest główny dziennik błędów Apache, który można znaleźć w
/var/log/apache2/error.log
: Będziesz chciał uzyskać porządną porcję dziennika i przejrzeć go, aby uzyskać szczegółowe informacje. Jeśli problemem jest bieżący problem z uruchomieniemTo podobne do
strace
będzie działać w czasie rzeczywistym. Dla ostatniego N linii wymienić-f
w-#
przypadku gdy#
jest to liczba dodatnia, jak 50, 100, 282, itd.źródło
Upewnij się, że masz odpowiednie uprawnienia do zatrzymania usługi.
Jeśli uruchomisz:
nie pojawi się żaden błąd tylko:
Próbować:
źródło
Ja również miałem ten sam problem i próbowałem:
aby zatrzymać usługę, oraz
aby zacząć od nowa.
To działa dla mnie, wszelkie możliwe sugestie są mile widziane.
źródło
Komenda
systemctl stop apache2
działała dla mnie.źródło
Procesy można poprosić (wysyłając do nich sygnał ) o zatrzymanie.
kill
Komenda jest sposobem, aby to zrobić. Jeśli znasz identyfikator procesu (PID) procesu, możesz go ładnie zapytać, uruchamiając poniższe polecenie w terminalu:Powyższy przykład wysyła PID domyślny sygnał TERM (kod 15). Możesz wyszukać kody sygnałowe na stronie man kill (
man kill
).Gdy program zignoruje wysłany do nich sygnał TERM, nadal można zastosować nieco większy nacisk, wysyłając sygnał KILL (kod 9). Ten sygnał jest używany w ostateczności, ponieważ proces może nie zapisać niezapisanych danych.
Określenie
-SIGNAL_CODE
jako pierwszego parametru przed identyfikatorem procesu wyśle procesowi określony sygnał. Inną przydatną funkcjąkill
polecenia jest to, że można podać więcej identyfikatorów PID, jak w poniższym przykładzie:Spróbuj zakończyć procesy Apache przy użyciu
kill -9
linii. Powinni przestać, chyba że coś ich powstrzyma.źródło
Miałem ten sam problem, ale nie możesz po prostu wykonać jednego
service apache2 stop
polecenia - musisz wykonać jeden proces PER . Następnie MOŻESZ chcieć dodać zsudo
przodu na wypadek, gdybyś zalogował się na jakieś dziwne konto, które tego potrzebuje, więc jeśli zobaczysz 9 uruchomionych procesów, zrób 9sudo service apache2 stop
Działa świetnie dla mnie.
źródło
Po zainstalowaniu nginx mój apache przestał działać poprawnie. Wydaje się, że w niektórych przypadkach apache jest mylący z nginx. Po prostu usuń nginx
źródło