Tidak dapat menghentikan proses apache

16

Pembaruan: Menanggapi komentar:

periksa proses 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

memeriksa log kesalahan 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

Asli: Saya telah menghentikan apache, tetapi mengapa masih memiliki jumlah proses yang sama berjalan?

$ 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

Terima kasih!

StackExchange untuk Semua
sumber
(Maaf saya tidak bisa berkomentar karena saya tidak punya cukup perwakilan.) 1. Apakah server web masih tersedia dengan browser web? 2. Periksa status proses Anda. Mereka mungkin telah menjadi "proses zombie" ps a | grep apache 3. Periksa log kesalahan, mungkin berguna tail /var/log/apache/error.log
SamK
1. Saya menggunakan firefox. Ini laptop saya. 2 dan 3 lihat pembaruan saya.
StackExchange for All
Sudahkah Anda mencoba 'apache2 -k stop' atau 'apache2 -k restart'? atau restart sistem Anda?
blade19899

Jawaban:

27

Ini bisa terjadi sesekali ketika Apache menolak untuk berhenti dengan baik atau memiliki Proses Zombie . Untuk yang pertama Anda dapat membunuh semua proses yang berjalan dengan sudo killall -9 apache2; Namun, untuk yang terakhir Anda harus menunggu mereka pergi. Jika Apache tidak ingin berhenti dengan baik, yang benar-benar ingin Anda lakukan adalah menyelidiki apa yang terjadi. Mencari tahu persis apa yang terjadi bisa jadi sulit.

Interaktif stracedari id proses dapat memberikan petunjuk tentang situs apa yang bertindak dan menyebabkan masalah. Dari Anda di atas, ps -AAnda dapat memeriksa proses pertama dengan

strace -p 1663

Ini akan dilampirkan pada jejak proses yang sedang berjalan, yang menyediakan keluaran langsung dari apa yang sedang terjadi. Kapan saja Anda bisa Ctrl+C

Sumber daya tambahan adalah log kesalahan utama untuk Apache yang dapat ditemukan di sini. /var/log/apache2/error.logAnda ingin mendapatkan potongan log yang layak dan memeriksanya untuk detail. Jika masalahnya adalah masalah yang sedang berjalan sedang berjalan

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

Ini mirip dengan yang straceakan berjalan secara realtime. Untuk baris N terakhir ganti -fdengan di -#mana #angka positif seperti 50, 100, 282, dll.

Marco Ceppi
sumber
7

Pastikan Anda memiliki izin yang tepat untuk menghentikan layanan.

Jika Anda menjalankan:

service apache2 stop

Anda tidak akan mendapatkan kesalahan apa pun hanya:

* Menghentikan apache server web2

Mencoba:

sudo service apache2 stop      
jeremyforan
sumber
ketika tidak ada cukup memori atau swap hampir penuh, ini akan gagal, killall adalah satu-satunya solusi
James Tan
3

Saya juga memiliki masalah yang sama, dan mencoba yang berikut:

sudo apache2ctl stop

untuk menghentikan layanan, dan

sudo apache2ctl start

untuk memulainya lagi.

Ini berfungsi untuk saya, saran yang mungkin diterima.

Rudhin
sumber
1

Perintah itu systemctl stop apache2bekerja untuk saya.

IMTHATGUY P
sumber
0

Proses dapat diminta (dengan mengirimkan sinyal ke mereka) untuk berhenti. The killperintah adalah cara untuk melakukan itu. Jika Anda mengetahui ID proses (PID) dari proses, itu dapat ditanyakan dengan baik dengan menjalankan perintah di bawah ini di terminal:

kill PID_OF_YOUR_PROCESS

Contoh di atas mengirimkan PID sinyal TERM default (kode 15). Anda dapat mencari kode sinyal di halaman manual kill ( man kill).

Ketika program mengabaikan sinyal TERM yang dikirim kepada mereka, masih mungkin untuk memberikan sedikit tekanan dengan mengirimkan sinyal KILL (kode 9). Sinyal ini digunakan sebagai upaya terakhir, karena prosesnya mungkin tidak menyimpan data yang belum disimpan.

Menentukan -SIGNAL_CODEsebagai parameter pertama sebelum ID proses akan mengirimkan proses sinyal spesifik. Fitur lain yang berguna dari killperintah ini adalah Anda dapat menentukan lebih banyak PID seperti dalam contoh berikut:

kill -9 PID1 PID2 PID3 PID4

Cobalah untuk menghentikan proses Apache dengan menggunakan kill -9baris. Mereka harus berhenti kecuali ada sesuatu yang menghalangi mereka untuk melakukannya.

Sean Kimball
sumber
Jika pembaca tidak terbiasa dengan perintah 'kill', hampir tidak ada kemungkinan mereka akan tahu bagaimana menemukan PID dari proses apache2.
Max Barraclough
0

Saya memiliki masalah yang sama tetapi Anda tidak bisa hanya melakukan satu service apache2 stopperintah - Anda harus melakukan satu proses PER . Kemudian, Anda DAPAT ingin menambahkan sudodi depan kalau-kalau Anda masuk ke beberapa akun ganjil yang membutuhkannya sehingga jika Anda melihat 9 proses berjalan, lakukan 9sudo service apache2 stop

Bekerja dengan baik untuk saya.

Peter
sumber
-2

Setelah menginstal nginx, apache saya berhenti berfungsi dengan benar. Tampaknya dalam beberapa kasus apache membingungkan dengan nginx. Hapus saja nginx

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