উত্তর:
কোন চলমান প্রক্রিয়াটি কোনও বন্দর ব্যবহার করছে তা আবিষ্কার করার বিভিন্ন উপায় রয়েছে।
ফুসার ব্যবহার করে এটি শ্রবণ বন্দরের সাথে যুক্ত একাধিক উদাহরণের পিআইডি (গুলি) দেবে।
sudo apt-get install psmisc
sudo fuser 80/tcp
80/tcp: 1858 1867 1868 1869 1871
সন্ধানের পরে, আপনি হয় প্রক্রিয়াটি বন্ধ বা হত্যা করতে পারেন (এস)।
আপনি পিএসডি এবং আরও বিবরণগুলি lsof ব্যবহার করে খুঁজে পেতে পারেন
sudo lsof -i tcp:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1858 root 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1867 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1868 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1869 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1871 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
80 পোর্টে শুনতে পাওয়া সকেটগুলিতে সীমাবদ্ধ করতে (ক্লায়েন্টগুলি যে 80 পোর্টের সাথে সংযুক্ত রয়েছে তার বিপরীতে):
sudo lsof -i tcp:80 -s tcp:listen
এগুলি স্বয়ংক্রিয়ভাবে হত্যা করতে:
sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
এখানে একটি অনেলিনার রয়েছে যা চালানোর আদেশটি দেখায়:
echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')
প্রতিস্থাপন echo
দ্বারা sudo
জন্য প্রক্রিয়া আসলে নিহত হবে।
echo
জন্য প্রতিস্থাপন করুনsudo
80
।
খোলা বন্দর তালিকাভুক্ত করার জন্য তিনটি বিকল্প jsh এর মধ্যে দেওয়া হয় whatisonport
:
netstat -anp --numeric-ports | grep ":${PORT}\>.*:"
fuser -v "${PORT}"/tcp
lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"
আমি পছন্দ করি netstat
কারণ এটি দ্রুত, সংক্ষিপ্ত, এবং অন্যান্য ব্যবহারকারীদের দ্বারা খোলা পোর্টগুলি তালিকাভুক্ত করতে পারে। (যদিও এ জাতীয় প্রক্রিয়াগুলির নাম এবং পিআইডি তালিকাভুক্ত করার জন্য এটি এখনও সুপারভাইজার / ব্যবহারকারীর সুবিধাগুলির প্রয়োজন হবে))
$ netstat -anp --numeric-ports | grep ":80\>.*:"
tcp6 0 0 :::80 :::* LISTEN 1914/apache2
$ fuser -v "80/tcp"
USER PID ACCESS COMMAND
80/tcp: root 1914 F.... apache2
www-data 12418 F.... apache2
...
$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2 1914 root 4u IPv6 11920 0t0 TCP *:80 (LISTEN)
apache2 12418 www-data 4u IPv6 11920 0t0 TCP *:80 (LISTEN)
...
ব্যবহারের grep
দুটি মামলা স্থানীয় পাশ শুধুমাত্র বন্দর মেলে, এবং একটি দূরবর্তী পোর্ট 80. খোলা সংযোগ লাফালাফি (একটি বিকল্প ব্যবহার করতে হবে হয় -l
সঙ্গে netstat
, অথবা lsof
ব্যবহারের -sTCP:LISTEN
, কিন্তু তারা উপরে greps আমি প্রদত্ত বন্দর থেকে আউটগোয়িং সংযোগগুলিও ধরুন যা মাঝে মাঝে আগ্রহের কারণ হতে পারে))
সঙ্গে lsof
আমরা ব্যবহার -P
প্রদর্শন করতে :80
পরিবর্তে :http
, grep সম্ভব না। -S 2
বিকল্প শক্তির lsof
যথা সময়ে সম্পন্ন করতে।
ধরে নিই আমরা ব্যবহার করতে চাই netstat
, আমরা পিআইডিগুলি এর মতো ধরতে পারি:
$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...
এবং আমরা এমনকি এই পিআইডি পাস করতে পারে kill
:
... | xargs -d '\n' kill -KILL
তবে রিজেক্সপস ব্যবহার করার সময় প্রায়শই মিথ্যা পজিটিভ হওয়ার সম্ভাবনা থাকে, তাই আমি কেবলমাত্র প্রাথমিক আউটপুটটি দেখার netstat
এবং তারপরে ম্যানুয়ালি সিদ্ধান্ত নেওয়ার পরামর্শ দিই যে চালানো উচিত কিনা:
$ kill -KILL 1914
আমার আরেকটি স্ক্রিপ্ট বলা আছে listopenports
যা আগ্রহী হতে পারে।
কোন প্রক্রিয়াটি মেরে ফেলতে হবে তা আপনি ইতিমধ্যে খুঁজে পেয়েছেন: এটির প্রক্রিয়া নম্বর 20570
এবং এর বাইনারিটির নামটি httpd
আউটপুটটির লাইনের শেষে লেখা রয়েছে netstat
। আপনি এটি নম্বর kill 20570
বা নাম দিয়ে হত্যা করতে পারেন killall httpd
তবে আমি সেভাবে এটি করার পরামর্শ দেব না would
1024 এর চেয়ে কম বন্দরগুলির একটি মানক ব্যবহার (সাধারণত) থাকে, আপনি সেগুলি এবং আরও অনেককে সন্ধান করতে পারেন less /etc/services
। 80 পোর্টের জন্য এন্ট্রি এমনকি মন্তব্য করা হয়েছে:
http 80/tcp www # WorldWideWeb HTTP
সুতরাং এটি সম্ভবত একটি ওয়েবসার্ভার। আপনি যে নামটি আছে httpd
এবং man httpd
আপনাকে বড় ইঙ্গিতটি এটি এ্যাপাচি যা তড়কা বাইনারি হয় দিতে হবে। অ্যাপাচি বড় খেলোয়াড়দের মধ্যে অন্যতম, এতে কিছু আরামদায়ক পরিচালনা-প্রোগ্রাম উপলব্ধ রয়েছে তবে আপনার কেবল নিরীক্ষণ / স্টপ অ্যাকশনের প্রয়োজন নেই।
তোমার কি পুদিনা আছে? একটি সাধারণ ডেস্কটপ সঙ্গে? তারপর দেখুন Control Center
অধীনে System
এবং ক্লিক করুন Services
। সেখানে কিছু করার জন্য আপনাকে প্রশাসক হওয়া দরকার। আপনি "ওয়েবসারভার" লেবেলযুক্ত কিছু না পাওয়া পর্যন্ত নীচে স্ক্রোল করুন (আমি আপাচের পরিবর্তে লাইটটিপিডি পেয়েছি এবং অ্যাপাচি এন্ট্রি কেমন হবে তা ঠিক জানি না) এবং এটিকে চেক করে না ফেলে।
আপনি যদি এটি থামাতে চান তবে কনসোলে অস্থায়ীভাবে চেষ্টা করুন
sudo service stop httpd
এবং দিয়ে শুরু sudo service start httpd
। সম্পর্কে জানে এবং পরিচালনা করতে পারে এমন service --status-all
সমস্ত পরিষেবার একটি তালিকা ফেরত দেয় service
। কোনও সার্ভিস পুনঃসূচনা করার শর্টকাট (এটি: থামুন এবং সেই ক্রমে এটি শুরু করুন) সেবার নামটি service --full-restart SERVICE
সহ SERVICE
, যেমন: httpd
অ্যাপাচি ক্ষেত্রে of
আপনি যে প্রোগ্রামগুলি সন্ধান করেন সেগুলির বেশিরভাগই netstat
সেইভাবে পরিচালনা করা যায়। কারও কারও কাছে ম্যান-পৃষ্ঠা নাও থাকতে পারে তবে সেগুলি বিরল।
এটি করার একটি সহজ উপায় আছে। প্রথমে কোন প্রক্রিয়াটি নেটট্যাট দ্বারা 80 বন্দরটি ব্যবহার করছে তা পরীক্ষা করুন :
netstat -ntl | grep 80
এখন আপনি প্রক্রিয়াটির নাম পেয়েছেন এবং কিল্লাল আদেশ দিয়ে প্রক্রিয়াটি মেরে ফেলুন :
killall -9 process name
killall
ব্যাখ্যা বা সতর্কতা ছাড়াই -1 ।
-k
সমস্ত মিলে যাওয়া প্রক্রিয়াগুলি-i
মেরে ফেলতে এবং ইন্টারেক্টিভভাবে হত্যা করতে হবে (প্রতিটিটির জন্য আপনাকে অনুরোধ জানানো হবে)।