Не в змозі зупинити процеси апаші


16

Оновлення: Відповідаючи на коментар:

перевірити процеси 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

перевірка журналу помилок 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

Оригінал: Апаш я зупинив, але чому він все ще працює стільки ж процесів?

$ 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

Спасибі!


(Вибачте, що не можу коментувати, оскільки мені недостатньо респондентів .) 1. Чи все ще доступний веб-сервер із веб-браузером? 2. Перевірте стан своїх процесів. Вони, можливо, стали "процесами зомбі" ps a | grep apache 3. Перевірте журнали помилок, вони можуть бути корисними tail /var/log/apache/error.log
SamK

1. Я використовую firefox. Це мій ноутбук. 2 та 3 див. Моє оновлення.
Тім

Ви спробували цей "apache2 -k стоп" або "перезапуск апаче2-к"? чи перезапуск вашої системи?
blade19899

Відповіді:


28

Це може траплятися іноді, коли Apache відмовляється прекрасно зупинитися або має зомбі-процеси . Для перших ви можете вбити всі запущені процеси за допомогою sudo killall -9 apache2; однак для останнього вам потрібно буде просто почекати, поки вони відійдуть. У випадку, якщо Apache не хоче красиво зупинятися, то, що ви дійсно хочете зробити, - це дослідити, що відбувається. Дізнатися, що саме відбувається, може бути важким.

Інтерактив straceідентифікатора процесу може дати зрозуміти, які сайти (сайти) діють та викликають проблеми. Зверху ps -Aви можете перевірити перший процес

strace -p 1663

Це додасть до сліду стека запущених процесів, що забезпечує живий результат того, що відбувається. У будь-який час ви можете Ctrl+C

Додатковий ресурс - це основний журнал помилок для Apache, який можна знайти у розділі. /var/log/apache2/error.logВи хочете отримати гідний фрагмент журналу та переглянути його для деталей. Якщо проблема - це проблема, що триває

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

Це схоже на straceзаповіт буде працювати в режимі реального часу. Для останніх N рядків замініть -fна -#де #позитивне число, наприклад 50, 100, 282 і т.д.


7

Переконайтеся, що у вас є належні дозволи для припинення послуги.

Якщо ви запускаєте:

service apache2 stop

ви не отримаєте жодної помилки просто:

* Зупинка веб-сервера apache2

Спробуйте:

sudo service apache2 stop      

коли недостатньо пам’яті або заміни майже повністю, це не вдасться, killall - єдине рішення
Джеймс Тан

3

У мене теж була така ж проблема, і я спробував таке:

sudo apache2ctl stop

припинити послугу та

sudo apache2ctl start

щоб почати його заново.

Це працює для мене, будь-які можливі пропозиції вітаються.



0

Процеси можна попросити (надіславши їм сигнал ) припинити. killКоманда є способом зробити це. Якщо вам відомий ідентифікатор процесу (PID) процесу, його можна буде запитати, виконавши команду нижче в терміналі:

kill PID_OF_YOUR_PROCESS

Наведений вище приклад посилає PID сигнал TERM за замовчуванням (код 15). Ви можете шукати коди сигналів на сторінці людини kill ( man kill).

Коли програма ігнорує надісланий їм сигнал TERM, все одно можна застосувати трохи більше тиску, надіславши сигнал KILL (код 9). Цей сигнал використовується в крайньому випадку, оскільки процес може не зберігати збережені дані.

Вказівка ​​a -SIGNAL_CODEв якості першого параметра перед ідентифікатором процесу буде надсилати процесу конкретний сигнал. Ще одна корисна особливість killкоманди полягає в тому, що ви можете вказати більше PID, як у наступному прикладі:

kill -9 PID1 PID2 PID3 PID4

Спробуйте припинити процеси Apache, використовуючи kill -9лінію. Вони повинні зупинятися, якщо щось не заважає їм це робити.


Якщо читач не знайомий з командою 'kill', майже немає шансів, що вони дізнаються, як знайти PID процесу apache2.
Макс Барраклу

0

У мене була така ж проблема, але ви не можете просто виконати одну service apache2 stopкоманду - ви повинні виконати один процес PER . Тоді ви можете МОЖЕТЕ додати sudoфронт-фронт на випадок, якщо ви увійдете в якийсь непарний обліковий запис, який потребує цього, якщо ви бачите 9 процесів, що працюють, зробіть 9sudo service apache2 stop

Для мене чудово працювали.


-2

Після встановлення nginx мій апарат перестав працювати належним чином. Здається, в деяких випадках апаш плутається з nginx. Просто видаліть nginx

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.