Apache işlemlerini durduramıyorum


16

Güncelleme: Yorumu yanıtlama:

apache süreçlerini kontrol edin:

$ 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 hata günlüğünü kontrol etme

$ 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

Orijinal: Apache'yi durdurdum, ancak neden hala aynı sayıda işlem çalışıyor?

$ 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

Teşekkürler!


(Üzgünüm yorum yapamadığım için yorum yapamıyorum.) 1. Web sunucusu hala bir web tarayıcısıyla kullanılabilir mi? 2. İşlemlerinizin durumunu kontrol edin. Onlar "Zombi süreçleri" haline gelmiş olabilir ps a | grep apache 3. Hata günlüklerini kontrol edin, yararlı olabilecek kuyruk /var/log/apache/error.log
SamK

1. Firefox kullanıyorum. Bu benim dizüstü bilgisayarım. 2 ve 3 güncellemelerime bakın.
Tim

Bu 'apache2 -k stop' veya 'apache2 -k restart'ı denediniz mi? veya sisteminizin yeniden başlatılması?
blade19899

Yanıtlar:


28

Bu, Apache'nin güzel bir şekilde durmayı reddetmesi veya Zombie Processes olması durumunda bazen olabilir . Birincisi için çalışan tüm işlemleri öldürebilirsiniz sudo killall -9 apache2; ancak, ikincisi için onların gitmelerini beklemeniz gerekir. Apache'nin güzel bir şekilde durmak istememesi durumunda, gerçekten yapmak isteyeceğiniz şey olup biteni araştırmaktır. Ne olduğunu tam olarak bulmak zor olabilir.

straceİşlem kimliğinin etkileşimli olması, hangi sitelerin çalıştığı ve sorunlara neden olduğu konusunda bir ipucu verebilir. Yukarıdakilerinizden ps -Ailk işlemi aşağıdakilerle kontrol edebilirsiniz:

strace -p 1663

Bu, olup bitenlerin canlı çıkışını sağlayan çalışan işlemler yığın izlemesine eklenir. İstediğiniz zaman Ctrl+C

Ek bir kaynak, bulabileceğiniz Apache için ana hata günlüğüdür.Günlüğün /var/log/apache2/error.logiyi bir yığınını almak ve ayrıntılar için gözden geçirmek isteyeceksiniz. Sorun devam eden bir sorunsa

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

Bu stracegerçek zamanlı olarak irade benzer çalışacaktır. Son N için hatlar yerine -file -#burada #50, 100, 282, vb gibi bir pozitif sayıdır


7

Hizmeti durdurmak için uygun izinlere sahip olduğunuzdan emin olun.

Eğer koşarsan:

service apache2 stop

sadece herhangi bir hata almayacaksınız:

* Web sunucusu apache2 durdurma

Deneyin:

sudo service apache2 stop      

yeterli bellek yoksa veya neredeyse dolu takas olmadığında, bu başarısız olur, killall tek çözümdür
James Tan

3

Ben de aynı sorunu yaşadım ve aşağıdakileri denedim:

sudo apache2ctl stop

hizmeti durdurmak ve

sudo apache2ctl start

tekrar başlatmak için.

Benim için çalışıyor, olası önerilerinizi bekliyoruz.



0

İşlemler durdurulabilir (onlara bir sinyal göndererek ). killKomut Bunu yapmanın bir yoludur. İşlemin işlem kimliğini (PID) biliyorsanız, bir terminalde aşağıdaki komutu çalıştırarak güzel bir şekilde istenebilir:

kill PID_OF_YOUR_PROCESS

Yukarıdaki örnek PID'ye varsayılan TERM sinyali gönderir (kod 15). Sinyal kodlarını kill ( man kill) kılavuzunun sayfasından öğrenebilirsiniz .

Program kendilerine gönderilen TERM sinyalini göz ardı ettiğinde, KILL sinyalini (kod 9) göndererek biraz daha fazla baskı uygulamak hala mümkündür. Bu sinyal son çare olarak kullanılır, çünkü işlem kaydedilmemiş verileri kaydetmeyebilir.

-SIGNAL_CODEİşlem kimliğinden önce ilk parametre olarak a belirtilmesi , işleme belirli bir sinyal gönderir. killKomutun bir başka yararlı özelliği , aşağıdaki örnekte olduğu gibi daha fazla PID belirtebilmenizdir:

kill -9 PID1 PID2 PID3 PID4

kill -9Satırı kullanarak Apache işlemlerini sonlandırmayı deneyin . Bir şey onları engellemedikçe durmalıdırlar.


Okuyucu 'kill' komutunu bilmiyorsa, apache2 işleminin PID'sini nasıl bulacağını bilme şansı neredeyse yoktur.
Max Barraclough

0

Aynı sorunu yaşadım ama sadece bir service apache2 stopkomut yapamazsın - PER işlemi için bir tane yapmalısın . Ardından, sudogereksinim duyan tek bir hesaba giriş yapmış olmanız durumunda bir ön eklemek isteyebilirsiniz, bu nedenle 9 işlemin çalıştığını görürseniz,sudo service apache2 stop

Benim için harika çalıştı.


-2

Nginx yüklendikten sonra apache'm düzgün çalışmıyor. Bazı durumlarda nginx ile karıştırılan bir apache gibi görünüyor. Sadece nginx'i kaldır

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.