কোন প্রক্রিয়া কোনও বন্দরের সাথে আবদ্ধ তা নির্ধারণ করা হচ্ছে


90

আমি জানি যে কমান্ডটি ব্যবহার করে:

lsof -i TCP 

(বা lsof সহ প্যারামিটারগুলির কিছু বৈকল্পিক) আমি নির্ধারণ করতে পারি যে কোন প্রক্রিয়াটি কোনও নির্দিষ্ট বন্দরের সাথে আবদ্ধ। এটি বলার অপেক্ষা রাখে না যদি আমি এমন কিছু শুরু করতে চাই যা 8080 তে আবদ্ধ হতে চায় এবং অন্য কেউ ইতিমধ্যে সেই বন্দরটি ব্যবহার করছেন তবে আমি কী জানি না।

Lsof ব্যবহার না করে কি এটি করার সহজ উপায় আছে? আমি অনেক সিস্টেমে কাজ করার জন্য সময় ব্যয় করি এবং প্রায়শই ইনস্টল করা হয় না।

উত্তর:


112

netstat -lnpপ্রতিটি শ্রবণ বন্দরের পাশে পিড এবং প্রক্রিয়া নাম তালিকাভুক্ত করবে। এটি লিনাক্সের অধীনে কাজ করবে, তবে অন্য সমস্ত নয় (যেমন এআইএক্স।) -tকেবলমাত্র টিসিপি চাইলে যুক্ত করুন ।

# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:24800           0.0.0.0:*               LISTEN      27899/synergys
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3361/python
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2264/mysqld
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22964/apache2
tcp        0      0 192.168.99.1:53         0.0.0.0:*               LISTEN      3389/named
tcp        0      0 192.168.88.1:53         0.0.0.0:*               LISTEN      3389/named

প্রভৃতি


শীতল ধন্যবাদ. দেখে মনে হচ্ছে এটি আরএইচএল এর অধীনে কাজ করে তবে সোলারিসের অধীনে নয় (যেমন আপনি নির্দেশ করেছেন)। সোলারিসের মতো কিছু আছে কি না কেউ জানেন?

netstat -pউপরে আমার ভোট। এছাড়াও তাকান lsof
ধনী হোমোলকা

সরাইয়া হিসাবে, উইন্ডোগুলির জন্য এটি অনুরূপ: নেটস্ট্যাট -আওন | আরও
জোনাথন

এসসিটিপির জন্য কী?
sudo

12

এআইএক্স-তে, প্রক্রিয়া বন্ধন নির্ধারণ করতে নেটস্যাট এবং আরএমএসক ব্যবহার করা যেতে পারে:

[root@aix] netstat -Ana|grep LISTEN|grep 80
f100070000280bb0 tcp4       0      0  *.37               *.*        LISTEN
f1000700025de3b0 tcp        0      0  *.80               *.*        LISTEN
f1000700002803b0 tcp4       0      0  *.111              *.*        LISTEN
f1000700021b33b0 tcp4       0      0  127.0.0.1.32780    *.*        LISTEN

# Port 80 maps to f1000700025de3b0 above, so we type:
[root@aix] rmsock f1000700025de3b0 tcpcb
The socket 0x25de008 is being held by process 499790 (java).

1
এর জন্য ধন্যবাদ! সকেটে কোন প্রক্রিয়া শোনার জন্য কেবল কোনও উপায় আছে তা প্রদর্শনের জন্য কি কোনও উপায় আছে (এটি সরিয়ে দেওয়ার চেষ্টা করে এমন আরএমএসক ব্যবহারের পরিবর্তে)?
অলিভিয়ার ডুলাক

2
@ অলিভিয়ারডুলাক: "এর নামটি বোঝায় তার বিপরীতে, আরএসসক সকেটটি সরিয়ে ফেলবে না, যদি এটি কোনও প্রক্রিয়া দ্বারা ব্যবহৃত হয়। এটি কেবল সকেটটি ধারণ প্রক্রিয়াটির রিপোর্ট করে।" ( আইবিএম.com / ডেভেলপ ওয়ার্কস / কম্যুনিটি / ব্লগস / সিগাইএক্স / এন্ট্রি / ))
পাই

@ ভিজিটর-ব্রেগা: আহ! আমি ভেবেছিলাম এটি চেষ্টা করছে তবে ঠিক বলেছেন যে কোন প্রক্রিয়া যখন এটি অপসারণ করতে পারে না তখন তা ধারণ করে। দৃশ্যত এটি কোনও প্রক্রিয়া ধরে রাখলে এটি অপসারণের চেষ্টাও করে না। চমৎকার! ধন্যবাদ!
অলিভিয়ার ডুলাক

8

লিনাক্সে উপলব্ধ অন্য একটি সরঞ্জাম এসএস । থেকে এস এস ফেডোরা মানুষ পৃষ্ঠা:

NAME
       ss - another utility to investigate sockets
SYNOPSIS
       ss [options] [ FILTER ]
DESCRIPTION
       ss is used to dump socket statistics. It allows showing information 
       similar to netstat. It can display more TCP and state informations  
       than other tools.

নীচের আউটপুট উদাহরণ - চূড়ান্ত কলাম প্রক্রিয়া বাইন্ডিং দেখায়:

[root@box] ss -ap
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                    :::http                    :::*        users:(("httpd",20891,4),("httpd",20894,4),("httpd",20895,4),("httpd",20896,4)
LISTEN     0      128             127.0.0.1:munin                    *:*        users:(("munin-node",1278,5))
LISTEN     0      128                    :::ssh                     :::*        users:(("sshd",1175,4))
LISTEN     0      128                     *:ssh                      *:*        users:(("sshd",1175,3))
LISTEN     0      10              127.0.0.1:smtp                     *:*        users:(("sendmail",1199,4))
LISTEN     0      128             127.0.0.1:x11-ssh-offset                  *:*        users:(("sshd",25734,8))
LISTEN     0      128                   ::1:x11-ssh-offset                 :::*        users:(("sshd",25734,7))


2

আমি একবার নির্দিষ্ট বন্দরটির পিছনে কী প্রক্রিয়াটি ছিল তা নির্ধারণের চেষ্টা করার মুখোমুখি হয়েছিল (এবার এটি 8000 ছিল)। আমি বিভিন্ন ধরণের lsof এবং netstat চেষ্টা করেছিলাম, কিন্তু তারপরে একটি সুযোগ নিয়ে একটি ব্রাউজারের মাধ্যমে বন্দরে আঘাত করার চেষ্টা করেছি (যেমন HTTP: // হোস্টনাম: 8000 / )। দেখুন এবং দেখুন, একটি স্প্ল্যাশ স্ক্রিন আমাকে স্বাগত জানিয়েছে এবং প্রক্রিয়াটি কী তা স্পষ্ট হয়ে ওঠে (রেকর্ডের জন্য, এটি স্প্লঙ্ক ছিল )।

আরও একটি ধারণা: "পিএস-ই-পিড, আরগস" (ওয়াইএমএমভি) কখনও কখনও আর্গুমেন্টের তালিকায় পোর্ট নম্বরটি প্রদর্শন করতে পারে। গ্রেপ আপনার বন্ধু!


একই শিরাতে, আপনি telnet hostname 8000দেখতে পেলেন এবং সার্ভার কোনও ব্যানার প্রিন্ট করছে কিনা। যাইহোক, সার্ভারটি যখন এমন কোনও মেশিনে চালিত হয় যেখানে শেল অ্যাক্সেস নেই তখন বেশিরভাগ ক্ষেত্রে কার্যকর হয় এবং তারপরে প্রক্রিয়া আইডি সন্ধান করা প্রাসঙ্গিক নয়।
গিলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.