Nginx থামাতে ব্যর্থ হয় এবং nginx.pid অনুপস্থিত


33

আমি এনগিনেক্স থামাতে চাই তবে এটি এভাবে ব্যর্থ হয়।

$ sudo service nginx stop
Stopping nginx:                                            [FAILED]

এবং nginx.confএটি nginx.pid এর অবস্থান নির্ধারণ করে একটি লাইন আছে।

# /etc/nginx/nginx.conf
pid        /var/run/nginx.pid;

কিন্তু nginx.pidডিরেক্টরিতে নেই /var/run/

locate nginx.pid এই আউটপুট দেখায়।

/var/run/nginx.pid 
/var/run/nginx.pid.oldbin

কিন্তু অনুসন্ধানের পরে updatedbআর কোনও মিল নেই। আমি nginx / 1.4.4 ইন ব্যবহার করছি CentOS release 6.5 (Final)

এনগিনেক্স ডেমন থামাতে আমার কী করা উচিত?

2014/01/07 সম্পাদনা করুন

এটি আউটপুট ps -ef | grep nginx, এটি nginx ডেমন এখনও চলছে বলে মনে হচ্ছে।

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  

এবং sudo service nginx restartএই ত্রুটি দেয়। আমি মনে করি nginxশুরু করতে ব্যর্থ হয়েছে কারণ পুরানো এখনও বেঁচে আছে। এবং /var/log/nginx/error.log-2014017এই ত্রুটি রয়েছে।

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]

3
সিস্টেমটি এনজিঙ্ক্স বন্ধ করতে পারে না যদি এটি চালু না থাকে এবং যেহেতু পিআইডি ফাইল নেই, তাই আমি সন্দেহ করি এটি ইতিমধ্যে বন্ধ হয়ে গেছে। আপনি ps -ef | grep nginxবা সাথে চেক করতে পারেন sudo netstat -tlnp | grep nginx
লাদাদাদাদা

1
আপনার উপদেশের জন্য ধন্যবাদ. আমি psআদেশের ফলাফল যুক্ত করেছি ।
ironsand

উত্তর:


37

আমি প্রথমে এর মাস্টার প্রক্রিয়াটি মেরে nginx বন্ধ করার সুপারিশ করব। এনগিনেক্স সঠিকভাবে শাটডাউন করা হচ্ছে না কারণ এটি আরআর স্ক্রিপ্ট ব্যবহার বন্ধ করা যায় না।

PS -ef | গ্রেপ এনগিনেক্স

এটি আপনাকে nginx মাস্টার প্রক্রিয়ার পিআইডি দেখায়। আপনি উপরে উল্লিখিত মত:

রুট 19506 1 0 2013? 00:00:00 এনজিএনএক্স: মাস্টার প্রক্রিয়া / ইউএসআর / এসবিন / এনগিনেক্স-সি /etc/nginx/nginx.conf

এটি ব্যবহার করে হত্যা

হত্যা -9 19506

কোনও এনগিনেক্স প্রক্রিয়া চলছে কিনা বা পোর্ট 80 দখল করা আছে কিনা তা আবার যাচাই করুন। যদি আপনি দেখতে পান যে কোনও প্রক্রিয়া 80 বন্দরটিতে আবদ্ধ হয়, পিআইডি সনাক্ত করুন এবং এটি হত্যা করা যায় কিনা তা পরীক্ষা করুন।

PS -ef | গ্রেপ এনগিনেক্স

netstat -tulpn | গ্রেপ 80

ফাইল সিস্টেমটি ঠিক আছে এবং আপনি / var ফাইল সিস্টেমে পড়তে / লিখতে পারবেন তা নিশ্চিত করুন। তারপরে nginx শুরু করুন

পরিষেবা nginx শুরু


ধন্যবাদ! মাস্টার প্রক্রিয়া হত্যার পরে, আমাকেও এনজিএনএক্স কর্মী প্রক্রিয়াটি মেরে ফেলতে হয়েছিল। তারপরে আমি অবশেষে nginx ডেমন শুরু করতে পারি।
ironsand

তুমি এখন একটা আত্মাকে বাঁচিয়েছ সন্দীপ! ডকুমেন্টিংয়ের জন্য অনেক ধন্যবাদ ..
থ্যাল

ধন্যবাদ @ সন্দীপ.এস 85। আমারও কাজে লাগে। আগ্রহের বাইরে কী কারণে এনজিনেক্স চলমান অবস্থায় এনগিনেক্স.পিড ফাইলটি নিখোঁজ হতে পারে?
কোডমনকি

এটি ঠিক আমার জন্য আবার ঘটেছে, আমি আশা করি এটি কী কারণে ঘটে তা আমি জানতাম।
কোডমনকি

আমার এনগিনেক্স মাস্টার প্রক্রিয়া আমি এটি মেরে ফেলার পরে ফিরে আসি।
ডাব্লুটিআইএফএস

11

সমস্যা

আমার জন্য এই দুটি ফাইলের মধ্যে পিড ফাইলের নাম আলাদা ছিল:

  • /usr/lib/systemd/system/nginx.service
    • pid /var/run/nginx.pid;
  • /etc/nginx/nginx.conf
    • PIDFile=/run/nginx.pid

সেই দুজনেরই মিল দরকার to

ফিক্স:

সুতরাং আমি এটিকে /usr/lib/systemd/system/nginx.service এ সামঞ্জস্য করেছি এবং পরে করেছি:

systemctl daemon-reload
systemctl start nginx

তারপরে এটি সঠিকভাবে উঠে এসেছিল।


3
কিভাবে? উবুন্টুতে /var/run/একটি সিমিলিংক রয়েছে/run/
জেড জেলাতেভ

হ্যাঁ এটি কোনও সমাধান নয়। তবে আমার ক্ষেত্রে সবকিছুই /run/nginx.pid।
বিপদ 89

আমার nginx.conf এর মধ্যে পিড লগস / এনগিনেক্স.পিড ছিল - এটি /run/nginx.pid এ পরিবর্তিত হয়েছে এবং এটি ঠিক করা হয়েছে, ধন্যবাদ প্যাট্রিক!
পিএইচপিগুরু

9

আমার এই সমস্যা ছিল এবং দৌড়াদৌড়ি ps -ef | grep nginxআমাকে এমন কর্মী দেখিয়ে দেবে যা গ্রহণযোগ্য উত্তরের পরামর্শ অনুসারে মাস্টার প্রক্রিয়াটি হত্যা না করেও কাটতে থাকবে:

[~]# ps -ef | grep nginx
nginx    10730     1  0 Sep14 ?        00:00:16 nginx: cache manager process            
nginx    18469     1  0 Oct09 ?        00:11:02 nginx: worker process                   
nginx    25779     1  0 Oct13 ?        00:01:31 nginx: worker process                   
nginx    26458     1  0 15:45 ?        00:00:00 nginx: worker process    

সুতরাং এটি সমাধানের জন্য আমার সমাধানটি কেবল এটি ছিল:pkill nginx && service nginx restart


1

আমার সমস্যাটি হ'ল আমি pidদুটি ভিন্ন কনফ ফাইলগুলিতে নির্দিষ্ট করেছিলাম । আমি একটি রেফারেন্স অপসারণ করার পরে .pidফাইলটি মুছে ফেলা এবং আবার এনগিনেক্স শুরু করার পরে এটি স্বাভাবিকভাবে আচরণ শুরু করে।


এটিকে হ্যাঁ, পিআইডি /usr/lib/systemd/system/nginx-debug.service এবং /etc/nginx/nginx.conf
এডমন্ডসকমার্স 9:36

0

এটি ইঙ্গিত দেয় যে এনজিন্স তত্ক্ষণাত ক্রাশ হচ্ছে, যদি এটি আগে শুরু করা হয়েছিল। /var/log/nginx*প্রক্রিয়াটি কী করছে তা দেখার জন্য আপনি কি সামগ্রীগুলি পরীক্ষা করেছেন ?

সম্পাদনা: এছাড়াও, আপনি যদি আমাদের ওএস এবং এনজিনেক্সের সংস্করণ আমাদের জানান তবে আমরা আরও বিশদ উত্তর দিতে পারি।


0

নিশ্চিত হওয়ার জন্য আমার আরও তথ্যের প্রয়োজন তবে আমি অনুমান করছি যে আপনি নিজেই চান এনজিনিক্সের উদাহরণের চেয়ে ইতিমধ্যে আপনার আর একটি ওয়েব সার্ভার চালু রয়েছে যাতে আপনার এটি সন্ধান করা দরকার - ত্রুটিটি বলে যে পোর্ট 80 ব্যবহারে রয়েছে তবে এটি দ্বারা নয় কি

চেষ্টা করুন netstat -tulpn- আপনি স্থানীয় ঠিকানার অধীনে একটি এন্ট্রি খুঁজছেন যা শেষ হবে: 80 - এটি আপনাকে প্রোগ্রামের নাম এবং পিআইডি দেবে যাতে আপনি এটি সনাক্ত করতে পারেন। এখানে আমার - আমি লাইটটিপিডি চালাচ্ছি এবং এটি তৃতীয় লাইনে দেখানো হয়েছে।

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      4684/rtorrent
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      923/php-fpm.conf)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      972/lighttpd
tcp        0      0 0.0.0.0:6901            0.0.0.0:*               LISTEN      4684/rtorrent
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      720/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      720/sshd
udp        0      0 0.0.0.0:6881            0.0.0.0:*                           4684/rtorrent

অন্যান্য ওয়েব সার্ভারটি সঠিকভাবে বন্ধ করুন (যেহেতু এটির উপরের প্রসার বন্ধ হয়ে যায়, তবে একটি সাধারণ 'কিল' কাজ নাও করতে পারে) এবং এনজিক্স শুরু করার চেষ্টা করুন। যদি এটির ক্ষেত্রে এটি হয় তবে আপনার ওয়েব স্ক্রিপ্টগুলি অন্য ওয়েব সার্ভারটি শুরু হতে বাধা দিতে বা অন্য কোনও শক্তির সাথে এর কনফিগারেশনটি সামঞ্জস্য করতে / করা উচিত।


আপনার সাহায্যের জন্য ধন্যবাদ. netstat -tulpnশো tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx। সুতরাং কোনওভাবে nginx যে বন্দরে দখল। তবে সন্দীপ যেমন বলেছিলেন, আমি এনজিনেক্স প্রক্রিয়াটি মেরেছিলাম তখন এটি কার্যকর হয়। আমি তোমার সাহায্য কে সাধুবাদ জানাই!
ironsand

0

আমার উবুন্টু ১০.১০ এবং এনগিনেক্সের একটি সংকলিত সংস্করণ / অপ্ট / এনগিনেক্স / এসবিনে চলছে এমন একটি সমস্যা আমার ছিল।

উভয় /opt/nginx/conf/nginx.conf এবং /etc/nginx/nginx.conf ফাইল পরীক্ষা করুন এবং সেগুলি মিলছে কিনা তা যাচাই করুন।

Nginx.pid অবস্থান পরীক্ষার সাথে মেলে ব্যবহার করতে /etc/init.d/nginx প্রারম্ভ ফাইলটি সামঞ্জস্য করুন:

sudo /etc/init.d/nginx configtest # should show no failures
sudo /etc/init.d/nginx start      # should show starting
sudo /etc/init.d/nginx status     # should show running
sudo /etc/init.d/nginx stop       # should show stopping -- (wait for a few)
sudo /etc/init.d/nginx status     # should show can not access PID file for nginx
sudo netstat -tap  # should not show nginx program running with open local address

0

এনজিঙ্ক্স বন্ধ করতে ম্যানুয়ালটি এটি কীভাবে করবেন তা পরীক্ষা করুন man nginx

ডিফল্ট উপায় হ'ল স্টপ সিগন্যালটি ব্যবহার করা উচিত nginx -s stop

সত্যিই যে সহজ হতে হবে। আপনার বিকল্পগুলি হ'ল:

stop, quit, reopen, reload.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.