Как узнать, что за программа слушает порт?
Ответ: с помощью программы lsof.
Например:
$ sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
apache2 17176 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 17945 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 24898 root 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 24947 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 24952 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 25715 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 26421 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 29851 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 30981 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 31104 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
apache2 31962 www-data 5u IPv6 6181425 TCP *:www (LISTEN)
$ sudo lsof -i :21
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
vsftpd 3800 root 3u IPv4 12036 TCP *:ftp (LISTEN)
# netstat -nap
Для решения задачи “выяснить, что за программа слушает порт” lsof лучше, чем netstat:
a) так как выдает только необходимый минимум информации
б) прощее запускается, т.е. быстрее набрать и легче запомнить
$ sudo netstat -nap |grep 22
tcp6 0 0 :::22 :::* LISTEN 3486/sshd
unix 2 [ ACC ] STREAM LISTENING 9033822 24937/ssh-agent /tmp/ssh-wIXrL24883/agent.24883
unix 27 [ ] DGRAM 8221 2903/syslogd /dev/log
unix 2 [ ACC ] STREAM LISTENING 9033895 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 2 [ ACC ] STREAM LISTENING 11122 3451/master public/flush
unix 2 [ ACC ] STREAM LISTENING 3229546 10490/dirmngr /var/run/dirmngr/socket
unix 3 [ ] STREAM CONNECTED 10055122 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9436973 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034551 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034190 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034170 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034154 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034128 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034099 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034054 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034025 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9034015 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9033998 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9033929 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
unix 3 [ ] STREAM CONNECTED 9033911 24974/dcopserver [k /tmp/.ICE-unix/dcop24974-1227155528
$ sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 3486 root 3u IPv6 11317 TCP *:ssh (LISTEN)
Я не поклонник холиваров.
Просто предложил еще один вариант решения задачи.
P.S.: Можно так попробовать: $ sudo netstat -nap |grep :22
Спасибо =) Про двоеточие в грепе я не сообразил. Действительно вывод практически одинаковый:
$ sudo netstat -nap |grep :22
tcp6 0 0 :::22 :::* LISTEN 3486/sshd
$ sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 3486 root 3u IPv6 11317 TCP *:ssh (LISTEN)