কমান্ড লাইনের মাধ্যমে httpd চলছে কি না তা কীভাবে আবিষ্কার করবেন?


29

আমি আমার সার্ভারের জন্য একটি ছোট কন্ট্রোল প্যানেলে কাজ করছি। আমার একটি কমান্ড দরকার যা বলবে যে httpdচলমান আছে বা থামছে কিনা ।

সম্ভবত অন্যান্য পরিষেবার ক্ষেত্রেও একই কোডটি ব্যবহার করা হবে।

উত্তর:


28

বেশিরভাগ লোক একটি এনডি সিস্টেমের মাধ্যমে তাদের httpd (অ্যাপাচি, এনগিনেক্স, ইত্যাদি) চালায়। আপনি অবশ্যই কোনও প্যাকেজ থেকে ইনস্টল করা থাকলে এটি অবশ্যই অবশ্যই কেস। এই সমস্ত ডিআইডি সিস্টেমের প্রায়শই কোনও পদ্ধতিতে কাজ চলছে যদি এটি চালু থাকে। আমার ক্ষেত্রে আমি এনগিনেক্স ব্যবহার করছি যা কোনও এসআইএসভি-স্টাইলের থ্রি স্ক্রিপ্ট পাঠায় এবং এটি একটি statusযুক্তি গ্রহণ করে, যেমন:

$ /etc/init.d/nginx status
 * nginx is running

স্পষ্টতই যদি আপনি কোনও আলাদা এইচডিডি, স্ক্রিপ্ট বা ডিআইডি সিস্টেম চালাচ্ছেন তবে আপনি কিছুটা আলাদা সিনট্যাক্স পেতে চলেছেন তবে আপনি নিজে নিজেই httpd চালু না করে (যা বিশ্বের সবচেয়ে খারাপ ধারণা বলে মনে হচ্ছে), আপনি না সম্ভবত একটি দুর্দান্ত, পরিচালিত স্টার্ট-আপ স্ক্রিপ্ট ব্যবহার করছে যা আপনাকে স্থিতিটি জিজ্ঞাসা করার অনুমতি দেবে।

এসএমএলের উত্তরে এই ধরণের সূচনা জিজ্ঞাসাবাদ সম্পর্কে আরও রয়েছে তবে এটি বিশ্বাসের সাথে সমস্যাটি কেবল তখনই আপনাকে জানায় যে কোনও প্রক্রিয়া এখনও চলছে কিনা। তোমার httpd 'র প্রধান প্রক্রিয়া পারে চলমান হতে কিন্তু কোনো না কোনোভাবে অচলাবস্থা। সাধারণ সূচনা পরীক্ষাগুলি এড়িয়ে চলা এবং আচরণগত পরীক্ষাগুলিতে অগ্রসর হওয়া অনেক অর্থবোধ করে।

আমরা httpds সম্পর্কে একটি জিনিস জানি যা তারা শুনবে they সাধারণত বন্দরে *: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 চলছে কিনা তা নিশ্চিত করার জন্য আমরা কোন প্রক্রিয়াটি খুব বেশি চলছে কিনা তাও পরীক্ষা করে দেখতে পারি । আমরা সব ধরণের চেক করতে পারি। নির্ভর করে আপনি কতটা বেহাল হতে চান :)

তবে এটি কেবল কোনও পোস্টের প্রতিচ্ছবি। সত্যিই এটি পরীক্ষা করতে চান? আচ্ছা এটি পরীক্ষা করা যাক ।

$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200

আমি কেবল প্রতিক্রিয়া কোডটি দেখছি (২০০ এর অর্থ "এ-ওকে!") তবে আবার, আমরা সঠিকভাবে উত্পন্ন হচ্ছে তা নিশ্চিত করার জন্য আমরা খনন করতে পারি এবং বাস্তবে আউটপুটটি পরীক্ষা করতে পারি।

তবে এমনকি এটি পুরোপুরি নয়। আপনি পরীক্ষা করছেন localhostএবং 200 এর প্রতিবেদন করছেন , কিছু ভুল নেই? যদি বিভারগুলি HTTP সরবরাহকারী নেটওয়ার্ক কেবলের মাধ্যমে চিবানো হয় (তবে সিস্টেমের বাকি অংশ নয়)? তারপর কি?! আপনি যখন নিচে আসবেন তখন আপনি আপটাইম রিপোর্ট করছেন। ভুল স্থিতির ডেটার চেয়ে কয়েকটি জিনিসই অধিকতর পেশাগত বলে মনে হয়।

সুতরাং আসুন একটি বাহ্যিক সার্ভারের সাথে কথা বলা যাক (আদর্শভাবে সম্পূর্ণ ভিন্ন সংযোগে, অন্য গ্যালাক্সিতে অনেক দূরে) এবং আমাদের সার্ভারকে জিজ্ঞাসা করতে এটি জিজ্ঞাসা করুন:

$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200

এই মুহুর্তে, যে কোনও সমস্যা প্রতিবেদন করেছে তা হ'ল অ্যাপ্লিকেশন সমস্যাগুলি (যার নিজস্ব ত্রুটি-হ্যান্ডলিং এবং-রিপোর্টিং থাকতে পারে, বা তারা ক্লায়েন্টের শেষে রয়েছে)।

এই পরীক্ষাগুলির সংমিশ্রণটি সমস্যাটি খুব কমই রয়েছে।


3
কি হয়েছে এইচডিডি?
ক্রিক

@ ক্রিক আপনার মানে কি?
অলি

4
উত্তম উত্তরের জন্য +1 তবে ওপি httpd সম্পর্কে জিজ্ঞাসা করেছিল এবং আপনি এনজিনেক্স ব্যবহার করেছেন
ক্রিক

4
@ ক্রিক আমার বইগুলিতে, "httpd" এর অর্থ "HTTP ডেমন; একটি ওয়েব সার্ভার"। নির্দিষ্ট একটি নয়। আপনার কি মনে হয় আমার অন্যভাবে করা উচিত? আমি জানি না যে আমি এটির আগে কোনও পানীয় কেনার প্রয়োজন ছাড়া আমি আরও কীভাবে আরও ভাল করে পরীক্ষা করতে পারি।
অলি

3
আমি যদি আপনাকে ক্লাসিক বলার জন্য একটি পানীয় কিনতে পারি। আমি মনে করি ওপি মানেই আপাচে এইচডিডি
ক্রিক

25

আপনি বেশিরভাগ লিনাক্স ডিস্ট্রোজে সার্ভিস কমান্ড সর্বজনীনভাবে ব্যবহার করতে পারেন।

$ 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

তথ্যসূত্র


আমার জানা মতে এটিই সঠিক উত্তর। তবে ওপি অন্যটি গ্রহণ করেছে :)
রমেশ

@ রামেশ - এটি ঠিক আছে, অলির এও ঠিক আছে, এটি খানিকটা রহস্যজনক।
slm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.