O “σωστός” τρόπος για να βρεις την διεργασία που χρησιμοποιεί μια πόρτα είναι με την βοήθεια της εντολής ss
(socket statistics ). H εντολή netstat
είναι προς απόσυρση (depracated).
Η εντολή ss -tulpn
(tcp,udp,listening,process,numeric) θα μας δείξει ποιες πόρτες είναι ανοικτές, και για να βρούμε ποιο πρόγραμμα παρέχει μια συγκεκριμένη υπηρεσία ss -tulp | grep http
:
tcp LISTEN 0 1024 0.0.0.0:http 0.0.0.0:* users:(("lighttpd",pid=814,fd=4))
tcp LISTEN 0 1024 0.0.0.0:https 0.0.0.0:* users:(("lighttpd",pid=814,fd=6))
tcp LISTEN 0 1024 [::]:http [::]:* users:(("lighttpd",pid=814,fd=5))
tcp LISTEN 0 1024 [::]:https [::]:* users:(("lighttpd",pid=814,fd=7))
Είναι το πρόγραμμα "lighttpd"
που έχει pid=814. Δεν αρκεί να τερματίσω το 814
όμως γιατί κάτι το ξεκίνησε. Πιθανά κάτι να παρακολουθεί αν έχει τερματιστεί και να το τρέξει ξανά και μάλλον θα ξεκινήσει ξανά στην επανεκκίνηση του υπολογιστή. Θα πρέπει να βρεις και να τερματίσεις την υπηρεσία.
Εδώ δεν υπάρχει κάποιος γενικός τρόπος. Η εντολή pstree
ίσως βοηθήσει, όπως και τα logs (πες πως δεν ξέρεις τι είναι το lighttpd). Μια καλή αρχή είναι να δεις αν υπάρχει κάποια υπηρεσία με αυτό το όνομα
root@PiGizmo:~# systemctl status lighttpd
● lighttpd.service - Lighttpd Daemon
Loaded: loaded (/lib/systemd/system/lighttpd.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2021-05-10 17:45:15 EEST; 2 days ago
Process: 801 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exite
d, status=0/SUCCESS)
Main PID: 814 (lighttpd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/lighttpd.service
└─814 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
Ναι το pid ταιριάζει οπότε το πετύχαμε. Σταματάμε και απενεργοποιούμε την υπηρεσία και δεν ασχολούμαστε ξανά με αυτό.
Και μετά που το έγραψα αυτό, βρήκα πως είναι το θέμα (περίπου) του σημερινού Linux Upskill Challenge, το σχετικό βίντεο