まず、lsof側はrootで実行しないと比較として合いません。( ssはrootでなくても良いが、Process情報が一部しか得られない )
その上で、
どちらもリスニング状態のポート番号を表示する事が出来るコマンドかと思います。
大抵はその通りですが、完全に合わないケースはあり得ます。
なぜ数が合わないのでしょうか??
ただこれは具体的に内容を挙げていただかないと、実際に合ってないのか勘違いなのか判断はできません。
lsof 側が絞り込み不十分だから、というのもあります。
ss 側は、-l ( LISTEN状態 ), -t ( TCP ), -4 ( IPv4 ) の3条件ですが、lsof 側は -i ( ネットワークソケット ) の条件しか指定されていません。
揃えるのであれば、lsof -i4TCP -sTCP:LISTEN
としてください。
※lsof側で絞らなくても、grep等で絞り込みかけても良いですが。例えば lsof -i -P | sed -ne '1p;/IPv4.*TCP.*LISTEN/p'
それで「完全に合わないケース」ですが、「ユーザプロセスではなくカーネルスレッドがLISTENしているもの」は lsof では現れません。例えばNFSサービスに関わるnfsdカーネルスレッドが典型的です。( 他の具体例を挙げられるほど詳しくはないですが )
ss や netstat は、まずカーネルからポート情報の一覧を取得し、そこにプロセス情報を補完するような調べ方をしている ( だから非rootでも一覧は得られる ) のに対し、lsof はユーザプロセスのファイルディスクリプタをまず見て ( 非rootだとこの時点で自ユーザ以外の情報が得られない )、その中からネットワークソケットに該当するものの情報を調べるようなやり方をしているからです。
以下、CentOS7上で試したサンプルです。NFSサービスに付随する2049、32921がカーネルスレッドが管理しているもので、lsof側に現れてません。
※最後のrpcinfoの出力を参考のこと。ポート番号は256進めいた表記なので注意 ( 8×256+1=2049, 128×256+153=32921 )
[root@cent7 ~]# lsof -i4TCP -sTCP:LISTEN -nP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 704 rpc 8u IPv4 17745 0t0 TCP *:111 (LISTEN)
sshd 1231 root 3u IPv4 23475 0t0 TCP *:22 (LISTEN)
cupsd 1235 root 12u IPv4 24382 0t0 TCP 127.0.0.1:631 (LISTEN)
dovecot 1300 root 24u IPv4 24426 0t0 TCP *:110 (LISTEN)
master 1520 root 13u IPv4 25176 0t0 TCP *:25 (LISTEN)
master 1520 root 17u IPv4 25201 0t0 TCP *:587 (LISTEN)
dnsmasq 1574 nobody 6u IPv4 25839 0t0 TCP 192.168.122.1:53 (LISTEN)
sshd 15327 root 9u IPv4 112609 0t0 TCP 127.0.0.1:6010 (LISTEN)
sshd 15733 root 9u IPv4 114654 0t0 TCP 127.0.0.1:6011 (LISTEN)
rpc.statd 15927 rpcuser 9u IPv4 117636 0t0 TCP *:60797 (LISTEN)
rpc.mount 15936 root 8u IPv4 117908 0t0 TCP *:20048 (LISTEN)
[root@cent7 ~]# ss -plt4 -n
State Recv-Q Send-Q Local Address:Port
LISTEN 0 5 192.168.122.1:53 (略) users:(("dnsmasq",pid=1574,fd=6))
LISTEN 0 128 *:22 (略) users:(("sshd",pid=1231,fd=3))
LISTEN 0 128 127.0.0.1:631 (略) users:(("cupsd",pid=1235,fd=12))
LISTEN 0 64 *:32921
LISTEN 0 100 *:25 (略) users:(("master",pid=1520,fd=13))
LISTEN 0 128 127.0.0.1:6010 (略) users:(("sshd",pid=15327,fd=9))
LISTEN 0 128 127.0.0.1:6011 (略) users:(("sshd",pid=15733,fd=9))
LISTEN 0 128 *:60797 (略) users:(("rpc.statd",pid=15927,fd=9))
LISTEN 0 64 *:2049 (略)
LISTEN 0 100 *:587 (略) users:(("master",pid=1520,fd=17))
LISTEN 0 100 *:110 (略) users:(("dovecot",pid=1300,fd=24))
LISTEN 0 128 *:111 (略) users:(("rpcbind",pid=704,fd=8))
LISTEN 0 128 *:20048 (略) users:(("rpc.mountd",pid=15936,fd=8))
[root@cent7 ~]# rpcinfo
program version netid address service owner
(略)
100003 3 tcp 0.0.0.0.8.1 nfs superuser
100003 4 tcp 0.0.0.0.8.1 nfs superuser
100227 3 tcp 0.0.0.0.8.1 nfs_acl superuser
(略)
100021 1 tcp 0.0.0.0.128.153 nlockmgr superuser
100021 3 tcp 0.0.0.0.128.153 nlockmgr superuser
100021 4 tcp 0.0.0.0.128.153 nlockmgr superuser
(略)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。