Saya ingin menghentikan Nginx tetapi gagal seperti ini.
$ sudo service nginx stop
Stopping nginx: [FAILED]
Dan nginx.conf
itu mendefinisikan tempat nginx.pid memiliki garis.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Tetapi tidak ada nginx.pid
dalam direktori /var/run/
.
locate nginx.pid
menunjukkan output ini.
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Tetapi setelah updatedb
itu tidak ada kecocokan untuk pencarian. Saya menggunakan nginx / 1.4.4 in CentOS release 6.5 (Final)
.
Apa yang harus saya lakukan untuk menghentikan daemon nginx?
Edit 2014/01/07
Ini adalah output ps -ef | grep nginx
, sepertinya daemon nginx masih berjalan.
ironsand 17065 16933 0 15:55 pts/0 00:00:00 grep --color nginx
root 19506 1 0 2013 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
ironsand 19507 19506 0 2013 ? 00:00:25 nginx: worker process
Dan sudo service nginx restart
memberikan kesalahan ini. Saya pikir nginx
gagal memulai karena yang lama masih hidup. Dan /var/log/nginx/error.log-2014017
juga mengandung kesalahan ini.
Stopping nginx: [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[FAILED]
ps -ef | grep nginx
atausudo netstat -tlnp | grep nginx
.ps
perintah.Jawaban:
Saya akan merekomendasikan menghentikan nginx dengan membunuh proses masternya terlebih dahulu. Nginx tidak dimatikan dengan benar mungkin karena itu tidak dapat dihentikan menggunakan skrip init.
Ini akan menunjukkan kepada Anda PID proses master nginx. Seperti yang Anda sebutkan di atas:
Bunuh itu menggunakan
Verifikasi sekali lagi apakah ada proses nginx yang berjalan atau port 80 ditempati. Jika Anda melihat ada proses yang mengikat ke port 80, Identifikasi PID dan periksa apakah itu bisa dimatikan.
pastikan sistem file baik-baik saja dan Anda dapat membaca / menulis ke / sistem file var. Kemudian Mulai nginx
sumber
Masalah
Bagi saya nama file pid berbeda dalam dua file:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Keduanya harus cocok.
Memperbaiki:
Jadi saya menyesuaikannya di /usr/lib/systemd/system/nginx.service dan kemudian melakukannya:
Kemudian itu muncul dengan benar.
sumber
/var/run/
adalah symlink dari/run/
Saya memiliki masalah ini, dan berlari
ps -ef | grep nginx
akan menunjukkan kepada saya para pekerja yang akan terus berputar, meskipun membunuh proses master seperti yang disarankan oleh jawaban yang diterima:Jadi solusi saya untuk memperbaikinya hanyalah ini:
pkill nginx && service nginx restart
sumber
Masalah saya adalah bahwa saya telah
pid
menentukan dalam dua file conf yang berbeda. Setelah saya menghapus satu referensi kemudian menghapus.pid
file dan mulai nginx lagi itu mulai berlaku normal.sumber
Ini tampaknya menunjukkan bahwa nginx langsung crash, jika sudah dimulai sebelumnya. Sudahkah Anda memeriksa konten
/var/log/nginx*
untuk melihat apa yang sedang dilakukan?EDIT: Juga, jika Anda memberi tahu kami OS dan versi nginx Anda, kami dapat memberikan jawaban yang lebih terperinci.
sumber
Saya membutuhkan lebih banyak informasi untuk memastikan tetapi, saya kira Anda sudah memiliki server web lain yang berjalan daripada contoh ngnix yang Anda inginkan sendiri sehingga Anda perlu menemukannya - kesalahan mengatakan port 80 sedang digunakan, tetapi tidak dengan apa
Coba
netstat -tulpn
- Anda sedang mencari entri di bawah alamat lokal yang berakhir dengan: 80 - ini juga akan memberi Anda nama program dan PID sehingga Anda dapat mengidentifikasinya. Ini milik saya - Saya menjalankan lighttpd dan ditunjukkan pada baris ke-3.Matikan server web lain dengan benar (karena jika itu memunculkan pemula, 'bunuh' yang normal mungkin tidak berfungsi) dan coba mulai ngnix. Jika demikian, Anda dapat / harus mengedit skrip init Anda untuk menghentikan server web lain memulai, atau menyesuaikan konfigurasinya pada kekuatan lain.
sumber
netstat -tulpn
menunjukkantcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Jadi entah bagaimana nginx menduduki port itu. Tapi seperti kata sandeep, saya membunuh proses nginx lalu berhasil. Saya menghargai bantuan Anda!Saya punya masalah serupa dengan Ubuntu 10.10 dan versi kompilasi dari nginx berjalan di / opt / nginx / sbin.
periksa kedua file /opt/nginx/conf/nginx.conf dan /etc/nginx/nginx.conf dan pastikan keduanya cocok.
Sesuaikan file /etc/init.d/nginx untuk mencocokkan dengan tes lokasi nginx.pid menggunakan:
sumber
Untuk menghentikan nginx, periksa manual bagaimana melakukannya
man nginx
.Cara standarnya adalah menggunakan sinyal stop dengan
nginx -s stop
.Seharusnya sesederhana itu. Pilihan Anda adalah:
sumber