چگونه می دانیم در یک پورت معین چه برنامه ای گوش می دهد؟


به جواب پذیرفته شده بروید




من مشکوک هستم که یک برنامه در حال گوش دادن به درگاه 8000 دستگاه من است.

وقتی دستور زیر را اجرا کردم ، این خطا را می گیرم:

 > python -m SimpleHTTPServer
# Lots of python error
socket.error: [Errno 98] Address already in use
 

اگر از پورت دیگری استفاده کنم ( 8000 پیش فرض است) ، سرور وب خوب کار می کند.

اگر من wget localhost:8000 از خط فرمان اجرا کنم ، برمی گردد 404 Not Found .

چه کاری می توانم انجام دهم (یا چه ابزارهایی در دسترس است) برای پیدا کردن چه برنامه ای در حال گوش دادن به درگاه است 8000 و از آنجا که آن برنامه پیکربندی شده است؟


390









6 :تعداد پاسخها


ترمینال خود را باز کنید و به عنوان تایپ کنید

 lsof -i :8000
 

آن دستور برنامه PID را با استفاده از آن درگاه به شما معرفی می کند. (اگر هیچ نتیجه ای از بین نرفت sudo زیرا ممکن است شما اجازه انجام مراحل خاص را نداشته باشید.)

به عنوان مثال ، با پورت 8000 ( python3 -m http.server ):

 $ lsof -i :8000
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
python3 3269 user    3u  IPv4 1783216      0t0  TCP *:8000 (LISTEN)
 

و پورت 22 (SSH):

 $ sudo lsof -i :22
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd     998 root    3u  IPv4 1442116      0t0  TCP *:ssh (LISTEN)
sshd     998 root    4u  IPv6 1442118      0t0  TCP *:ssh (LISTEN)
 

امیدوارم که کمک کند


335



می توانید از netstat استفاده کنید تا ببینید کدام پروسه در کدام پورت گوش می کند.

برای داشتن جزئیات کامل می توانید از این دستور استفاده کنید:

 sudo netstat -peanut
 

اگر می خواهید دقیقاً بدانید کدام یک در بندر 8000 را گوش می دهد می توانید از این موارد استفاده کنید:

 sudo netstat -peanut | grep ":8000 "
 

هیچ روندی وجود ندارد که بتواند از netstat پنهان شود.


384



برای توضیح در مورد پاسخ @ 33833 می توانید اطلاعات بسیار مفصلی دریافت کنید ، به عنوان مثال:

 $ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf
 

من می توانم درست در آنجا ببینم که فرایند ماهی مرکب است ، اما این حقیقت من squid-deb-proxy است که بندر را تصرف می کند.

مثال خوب دیگری از برنامه java:

 $ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl
 

می توانید در lsof (LiSt Open Files) مشاهده کنید که این جاوا است ، که کمتری از آن مفید است. اجرای ps دستور با PID می توانیم فوراً ببینیم که CrashPlan است.


175



سعی کنید ss از iproute2 بسته های:

 ss -nlp | grep 8000
 

14



راه دیگر استفاده socklist از procinfo بسته:

man socklist

DESCRIPTION
socklist یک اسکریپت Perl است که لیستی از همه پریزهای باز ، انواع شمارش ، پورت ، اینود ، uid ، pid ، fd و برنامه ای را که به آن تعلق دارد ، در اختیار شما قرار می دهد.

sudo socklist

 type  port      inode     uid    pid   fd  name
tcp     53      28749       0   1721    5  dnsmasq
tcp    631      29190       0   2433   11  cupsd
tcp  42376      82230    1000   1345   84  firefox
tcp  49048      71686    1000   1345   67  firefox
tcp  41248      81672    1000   1345  119  firefox
tcp  54676      84558    1000   1345   73  firefox
udp  56107      66258       0   3268   20  dhclient
udp  40804      17857     107    679   14  avahi-daemon
udp     53      28748       0   1721    4  dnsmasq
udp     68      67427       0   3268    6  dhclient
udp    631      19692       0    765    8  cups-browsed
udp   5353      17855     107    679   12  avahi-daemon
 

7



می توانید از nmap استفاده کنید.

این بسیار مهم است که بدانید کدام درگاه در رایانه شخصی شما باز است ، این نه تنها برای لینوکس مفید است ، بلکه برای سایر سیستم عامل ها نیز وجود دارد ، لینوکس دارای ابزارهای زیادی برای بررسی اینکه کدام درگاه ها باز هستند ، متداول ترین nmap است که ابزار خط فرمان ، اما در صورت ترجیح آن راه ، یک FrontEnd Graphical نیز برای آن وجود دارد. 1

آن را نصب کنید، فقط دکمه Ctrl+ Alt+ Tبر روی صفحه کلید خود را به باز کردن ترمینال. وقتی باز شد ، دستور زیر را اجرا کنید:

 sudo apt-get install nmap
 

برای اطلاعات بیشتر در مورد nmap و سایر برنامه های کاربردی ، به اینجا برویدhttp://www.garron.me/go2linux/which-service-or-program-listening-port.html

1 منبع: garron.me


2



انتشارات مرتبط


چگونه بررسی کنیم که KPTI در اوبونتو من فعال شده است؟

چگونه می دانیم که پلت فرم در حال اجرا Ubuntu یا CentOS با کمک اسکریپت Bash است؟

چگونه بدانیم از DNS در اوبونتو 12.04 استفاده می کنم

چگونه بدانیم جعبه احراز هویت واقعی است یا جعلی؟

چگونه بدانیم کدام فرمان بدون توقف آن اجرا می شود؟

چگونه بدانیم که آیا بسته خاصی روی اوبونتو نصب شده است؟ [تکثیر]

چگونه می توانم بفهمم که برخی از برنامه های بسته بندی مناسب شامل چه برنامه هایی است؟

چگونه می دانیم از چه نسخه ای از PHP در xampp استفاده می شود؟

چگونه می دانم از 14.04 به بعد از چه DNS استفاده می کنم در اوبونتو

چگونه می توان پارتیشن را در آنجا نصب کرد

[networking] سوال برچسب


تفاوت بین apt-get چیست؟

نحوه ساختن یک فایل (به عنوان مثال یک اسکریپت .sh) ، بنابراین می توان آن را از یک ترمینال اجرا کرد

چگونه اوبونتو را حذف کرده و ویندوز را دوباره فعال کنیم؟

چرا میهمان اوبونتو در VirtualBox بسیار ، بسیار آهسته اجرا می شود؟

استخراج تصاویر تعبیه شده از PDF

چگونه می توان PPA را در سرور اضافه کرد؟

ورودی را به طور خودکار در خط فرمان وارد کنید

اسکریپت BASH برای تنظیم متغیرهای محیطی کار نمی کند

چه لیست های راه اندازی سفارشی و لیست وحدت در دسترس هستند؟

ساده ترین راه برای فعال کردن PHP در nginx چیست؟