जवाबों:
अधिकांश लोग init सिस्टम के माध्यम से अपने httpd (Apache, Nginx, आदि) को चलाते हैं। यदि आपने किसी पैकेज से इंस्टॉल किया है, तो यह लगभग निश्चित ही है। यदि यह चल रहा है तो लगभग सभी इनिट सिस्टम में वर्कआउट करने का एक तरीका है। मेरे मामले में मैं nginx का उपयोग कर रहा हूं जो SysV- स्टाइल इनिट स्क्रिप्ट को शिप करता है और जो एक status
तर्क को स्वीकार करता है , जैसे:
$ /etc/init.d/nginx status
* nginx is running
जाहिर है कि यदि आप एक अलग httpd, स्क्रिप्ट या init सिस्टम चला रहे हैं, तो आपके पास थोड़ा अलग वाक्यविन्यास होने वाला है, लेकिन जब तक आप मैन्युअल रूप से httpd को लॉन्च नहीं कर रहे हैं (जो दुनिया में सबसे बुरा विचार लगता है), आप शायद एक अच्छी, प्रबंधित स्टार्ट-अप स्क्रिप्ट का उपयोग करना जो आपको स्थिति को क्वेरी करने की अनुमति देगा।
स्लम के उत्तर में इस तरह की इनवाइट क्वेरी के बारे में अधिक है, लेकिन भरोसा करने में समस्या यह है कि यह वास्तव में केवल आपको बताता है कि क्या कोई प्रक्रिया अभी भी चल रही है। आपकी httpd की मुख्य प्रक्रिया चल सकती है लेकिन किसी तरह से गतिरोध। यह सरल इनिट परीक्षणों को छोड़ने और व्यवहार परीक्षणों को आगे बढ़ाने के लिए बहुत मायने रखता है।
Httpds के बारे में एक बात हमें पता है कि क्या वे सुनते हैं। आमतौर पर पोर्ट पर *:80
, लेकिन अगर आपका नहीं है, तो आप कोड निम्नलिखित कोड को अनुकूलित कर सकते हैं। यहाँ मैं सिर्फ awk
आउटपुट netstat
देखने के लिए हूँ अगर यह सही पोर्ट पर सुन रहा है।
$ sudo netstat -ntlp | awk '$4=="0.0.0.0:80"'
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2079/nginx
हम यह भी जांच सकते हैं कि सही httpd चल रहा है या नहीं यह सुनिश्चित करने के लिए कौन सी प्रक्रिया चल रही है। हम सभी प्रकार की जाँच कर सकते थे। निर्भर करता है कि आप कैसे पागल होना चाहते हैं :)
लेकिन यहां तक कि यह केवल एक httpd का प्रतिबिंब है। वास्तव में इसका परीक्षण करना चाहते हैं? अच्छा चलो इसका परीक्षण करते हैं।
$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200
मैं सिर्फ प्रतिक्रिया कोड देख रहा हूं (200 का अर्थ है "ए-ओके!") लेकिन फिर, हम खुदाई कर सकते हैं और वास्तव में आउटपुट का परीक्षण कर सकते हैं यह सुनिश्चित करने के लिए कि यह सही तरीके से उत्पन्न हो रहा है।
लेकिन यह भी पूरी तरह से नहीं है। आप जाँच कर रहे हैं localhost
और यह 200 की सूचना दे रहा है, कुछ भी गलत नहीं है? क्या होगा अगर बीवर नेटवर्क केबल के माध्यम से चबाते हैं जो httpd (लेकिन बाकी सिस्टम नहीं) की आपूर्ति करता है? फिर क्या?! आप अपटाइम की रिपोर्ट कर रहे हैं जब आप वास्तव में नीचे हैं। कुछ चीजें गलत स्थिति डेटा की तुलना में अधिक अव्यवसायिक दिखती हैं।
तो चलिए एक बाहरी सर्वर से बात करते हैं (आदर्श रूप से पूरी तरह से अलग कनेक्शन पर, एक अन्य आकाशगंगा में, बहुत दूर) और हमारे सर्वर को क्वेरी करने के लिए कहें:
$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200
इस बिंदु तक, किसी भी समस्या की रिपोर्ट की गई है या तो इन-ऐप समस्याएँ हैं (जिनकी अपनी त्रुटि हो सकती है -हार्डिंग और वे क्लाइंट के अंत में हैं)।
इन परीक्षणों के संयोजन से जहां समस्या होती है, वहां नाखून गिराने में मदद मिल सकती है।
आप अधिकांश लिनक्स डिस्ट्रोस पर सार्वभौमिक रूप से सेवाओं के कमांड का उपयोग कर सकते हैं।
$ service <service> status
$ service httpd status
httpd (pid 23569) is running...
इसी कमांड का उपयोग उन सभी सेवाओं के लिए किया जा सकता है जो व्यक्तिगत आधार पर चल रही हैं या सभी सेवाओं की स्थिति का पता लगाने के लिए।
$ service --status-all
python is stopped
automount (pid 22457) is running...
Avahi daemon is not running
Avahi DNS daemon is not running
crond (pid 23577) is running...
gpm is stopped
hald is stopped
httpd (pid 23569) is running...
...
यदि आप अधिक विशिष्ट सेवा प्रबंधन ढांचे में से एक का उपयोग कर रहे हैं, तो आप प्रत्येक के भीतर सेवाओं को सूचीबद्ध करने के लिए निम्नलिखित विधियों का उपयोग कर सकते हैं।
SysVinit
$ ls -l /etc/init.d/ | head -10
total 220
-rwxr-xr-x 1 root root 1422 Jan 13 2009 ajaxterm
-rwxr-xr-x 1 root root 3052 Apr 20 2012 autofs
-rwxr-xr-x 1 root root 1877 Apr 13 2011 avahi-daemon
-rwxr-xr-x 1 root root 1824 Apr 13 2011 avahi-dnsconfd
-rwxr-xr-x 1 root root 1926 Feb 22 2012 crond
-rwxr-xr-x 1 root root 14291 Dec 19 2011 functions
-rwxr-xr-x 1 root root 1778 Jan 6 2007 gpm
-rwxr-xr-x 1 root root 1586 Mar 5 2011 haldaemon
-rwxr-xr-x 1 root root 5742 Dec 19 2011 halt
systemd
$ systemctl list-unit-files --type=service | head -10
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
accounts-daemon.service enabled
alsa-restore.service static
alsa-state.service static
कल का नवाब
$ initctl list | head -10
avahi-daemon start/running, process 1090
mountall-net stop/waiting
nmbd start/running, process 2045
passwd stop/waiting
rc stop/waiting
rsyslog start/running, process 1088
tty4 start/running, process 1211
udev start/running, process 483
upstart-udev-bridge start/running, process 480
ureadahead-other stop/waiting