-
Você está certo em assumir que
lsof
usa o inode do cache de nomes do kernel. Nas plataformas Linux, o nome do caminho é fornecido pelo sistema de arquivos/proc
do Linux. -
O tratamento de links físicos é melhor explicado no FAQ :
3.3.4 Why doesn't lsof report the "correct" hard linked file path name?
When lsof reports a rightmost path name component for a file with hard links, the component may come from the kernel's name cache. Since the key which connects an open file to the kernel name cache may be the same for each differently named hard link, lsof may report only one name for all open hard-linked files. Sometimes that will be "correct" in the eye of the beholder; sometimes it will not. Remember, the file identification keys significant to the kernel are the device and node numbers, and they're the same for all the hard linked names.
O fato de o nó excluído ser exibido também é específico do Linux (e versões posteriores do Solaris 10, de acordo com o mesmo FAQ ).