একটি নির্দিষ্ট বন্দর ব্যবহার করে প্রক্রিয়াটির পিআইডি সন্ধান করছেন?


391

আমি আমার উবুন্টু সিস্টেমে হ্যাডোপ ইনস্টল করছি। আমি যখন এটি শুরু করি, এটি প্রতিবেদন করে যে পোর্ট 9000 ব্যস্ত।

আমি ব্যবহার করতাম:

netstat -nlp|grep 9000

এই জাতীয় বন্দর রয়েছে কিনা তা দেখতে এবং আমি এটি পেয়েছি:

   tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

তবে আমি যে প্রক্রিয়াটি ধরে রেখেছি তার পিআইডি কীভাবে পেতে পারি?




netstatকমান্ড আপনাকে পেতে এটির জন্য অনেক অপারেশন সিস্টেমে কাজ করতে পারে, আপনাকে কেবল আর্গুমেন্টগুলি খুঁজে পেতে হবে যা নিশ্চিত করবে যে এটি প্রতিটি পরিচিত খোলা বন্দরের পাশে পিডগুলি প্রদর্শন করবে।
লুকিয়ানো

উত্তর:


474

লিনাক্সে, আপনার পছন্দসই তথ্য পেতে আপনাকে অবশ্যই মূল বা প্রক্রিয়াটির মালিক হতে হবে। যেমন, অন্য ব্যবহারকারী হিসাবে চলমান প্রক্রিয়াগুলির জন্য, প্রিপেন্ডিং sudoআপনার যা প্রয়োজন তা সর্বাধিক। এগুলি ছাড়াও, আধুনিক লিনাক্স সিস্টেমে ssএটি করার জন্য সরঞ্জামটি হ'ল:

$ sudo ss -lptn 'sport = :80'
State   Local Address:Port  Peer Address:Port              
LISTEN  127.0.0.1:80        *:*                users:(("nginx",pid=125004,fd=12))
LISTEN  ::1:80              :::*               users:(("nginx",pid=125004,fd=11))

আপনি বর্তমানে একই অনুরোধটি ব্যবহার করছেন তবে এটি মনে রাখতে হবে sudo:

$ sudo netstat -nlp | grep :80
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  125004/nginx

আপনি lsof ব্যবহার করতে পারেন:

$ sudo lsof -n -i :80 | grep LISTEN
nginx   125004 nginx    3u  IPv4   6645      0t0  TCP 0.0.0.0:80 (LISTEN)

36
দ্রষ্টব্য: ওএসএক্সের অধীনে -pবিকল্পটি প্রক্রিয়া পরিবর্তে প্রোটোকলের জন্য। এই প্রশ্নটি
ব্রায়ান পি

3
@ ব্রায়ানপি ওপেন উবুন্টুকে অনুরোধ করলেন যাতে এটুকু অপ্রাসঙ্গিক ...
অ্যাডাম বি

43
@ অ্যাডামবি যদি না কোনও ম্যাক ব্যবহারকারী এখানে সন্ধান করতে আসেনFinding the PID of the process using a specific port
ম্যারানক্রুজ

2
এই উত্তরটি সম্ভবত sudoশীর্ষে রাখার মাধ্যমে উন্নত হবে ।
নচট

2
@ শ্রীযুক্তিঞ্চা সংশ্লেষ (-টি) বিকল্পগুলি ব্যবহার করুন -lsof -ti tcp:80
মোহনিশ

138

এছাড়াও আপনি lsofইউটিলিটি ব্যবহার করতে পারেন । মূল হতে হবে।

# lsof -i :25
COMMAND  PID        USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
exim4   2799 Debian-exim    3u  IPv4   6645      0t0  TCP localhost:smtp (LISTEN)
exim4   2799 Debian-exim    4u  IPv6   6646      0t0  TCP localhost:smtp (LISTEN)

9
এই কমান্ডটি কেবল establishedসংযোগগুলি সহ আপনাকে প্রক্রিয়াগুলি দেবে , কেবল প্রসেস নয় listening
অগ্নিনির্বাপক

1
অগত্যা মূল হতে হবে না। এবং, যারা কেবল পিআইডি পেতে চান তাদের জন্য, আপনি পারেন lsof -i :25 -Fp, যা আউটপুট যেমন উত্পাদন করে p1234
রবার্ট

12

আমি "সেন্টোস 7 ন্যূনতম" ব্যবহার করছি যা netstatনাও আছে lsof। তবে প্রচুর লিনাক্স বিতরণে সকেট পরিসংখ্যান কমান্ড (যেমন ss) রয়েছে ie

মৃত্যুদন্ড কার্যকর করার উদাহরণ এখানে:

# ss -tanp | grep 6379
LISTEN   0    128  127.0.0.1:6379   *:*   users:(("redis-server",pid=2531,fd=4))

1
আরও দেখুনss -pntl 'sport = :6379'
স্টাফেন চ্যাজেলাস

10

কমান্ড দিয়ে চালানো sudoআপনাকে দিতে হবে PID। আমার ডেভলপমেন্ট মেশিনে আমি পাই:

$ netstat -nlp | grep 8080
tcp6       0      0 :::8080      :::*       LISTEN      -

$ sudo netstat -nlp | grep 8080
tcp6       0      0 :::8080      :::*       LISTEN      16449/java

এবং অন্যান্য উত্তরে উল্লিখিত হিসাবে আপনি কমান্ডগুলি ssবা lsofকমান্ডগুলিও ব্যবহার করতে পারেন ।


sudoডিসপ্লে প্রসেস আইডি হিসাবে চলমান কমান্ড
ইউজেন কনকভ

কিন্তু sudo netstat -nlp | grep 34157এখনও যদি -পিআইডি পরিবর্তে প্রদর্শিত হয়?
ইউজেন কনকভ

8

এছাড়াও আপনি ব্যবহার করতে পারেন fuser:

fuser -v -n tcp 22

আউটপুট :

                     USER        PID ACCESS COMMAND
22/tcp:              root        598 F.... sshd

এটি ফুসার -v -n টিসিপি ৮০ কাজ করে না , এমনকি আমি
সুডোর সাথেও

1
দ্রষ্টব্য: এই প্রয়োজন sudoযদি আপত্তিকর প্রক্রিয়া সাথে শুরু হয়েছিলsudo
laggingreflex

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