# Lsof

lsof (abreviació de list of open files, en català, llista de fitxers oberts) és una coneguda eina de monitoratge de sistemes operatius tipus Unix que s'utilitza per mostrar tots els arxius de disc que mantenen oberts els processos, incloent els sockets de xarxa oberts, canonades, entre altres tipus.
La comanda lsof ofereix a l'usuari informació detallada sobre el context on s'utilitza l'arxiu. Entre la informació es troba:
* Nom i ID del procés,
* Nom o id de l'usuari que va llançar aquest procés,
* El descriptor d'arxiu juntament amb la manera d'obertura (lectura, escriptura, etc ..),
* El tipus de node associat a la imatge: Canonada (FIFO), Socket IPv4, Socket IPv6, Directori, bloc de dispositius, etc ..
* La ruta absoluta de l'arxiu o bé informació relativa segons el tipus,
* El context de seguretat SELinux
lsof és programari lliure i el seu autor original és Victor A. Abell

## Mode d'ús

A la invocació de la comanda lsof, es permet identificar quins processos estan utilitzant el o els arxius indicats.
Algun dels paràmetres que té lsof són:

### -a

    Permet que les opcions (paràmetres) siguin requisits per llistar. Útil quan es "filtra" usant -c, -g, -o o -p.

### -c CADENA

    Llista els arxius dels processos que comencin amb CADENA

### -d FDs

    Determina que s'han d'excloure el o els Descriptors d'Arxius (FD) de la llista. Els valors se separen per comes.

### +d DIRECTORI

    Llista els processos que utilitzin el directori o bé algun dels arxius que contingui.

### +D DIRECTORI

    ídem a l'anterior però recursiu: inclou els subdirectoris i arxius que aquests continguin

### -I

    Llista els sockets oberts.

### -g GID

    Llista els arxius llançats pel GID (ID de Grup) indicat.

### -n

    No resol els noms de domini.

### -p PID

    Llista els arxius oberts pel procés amb el PID (identificador de procés) indicat.

### -P

    No resol els noms dels ports (connexions).

### [+|-]r [N [mCADENA]]

    Imprimeix en pantalla el resultat cada N segons, si no s'especifica s'executa cada 15. Si s'utilitza el prefix '-' es repeteix aquesta operació fins que l'usuari el cancel · (ctrl+C), en canvi si s'utilitza el prefix '+', el procés acaba quan no hi hagi fitxers llistats. Addicionalment entre cada actualització és possible indicar quina és la cadena de text que separa cada resultat, mitjançant m CADENA. En cas de no indicar cap cadena, per defecte s'utilitza '======='.

### -u [ usuari | UID]

    Llista els arxius oberts per l'usuari o bé UID (identificador d'usuari).

### -U

    Llista els sockets UNIX (IPC sockets).
Si no s'indica cap paràmetre lsof enumera tots els arxius oberts en aquest moment, que normalment solen ser bastants.

## Exemples

Llistar els fitxers oberts pel procés firefox. Es van utilitzar expressions regulars per garantir que sigui aquest procés:
lsof -c "/\bfirefox\b/"
Llistar els processos que fan ús de l'arxiu /home /usuari/fitxer.txt:
lsof /home/usuari/fitxer.txt
Llistar els fitxers oberts pertanyents al home de l'usuari actual. L'accent (~) és l'àlies de l'home de l'usuari:
lsof +D ~
Llistar els sockets oberts pel procés el nom contingui "java" (filtrat per grep):
lsof -i -n -P | grep java
Resultat:
    java 11819 lyonn 34u IPv6 52669 TCP *: 1095 (LISTEN)
    java 11819 lyonn 37u IPv6 52671 TCP *: 53.872 (LISTEN)
    java 11819 lyonn 39u IPv6 52732 TCP 10.225.183.218:41525 -> 10.225.183.218:35812 (ESTABLISHED)
    java 11880 lyonn 34u IPv6 52743 TCP *: 1096 (LISTEN)
    java 11880 lyonn 37u IPv6 52745 TCP *: 33.029 (LISTEN)
    java 11880 lyonn 39u IPv6 52757 TCP 10.225.183.218:41530 -> 10.225.18

## Vegeu també

* ps

## Enllaços externs

* Pàgina man línia de lsof
* Lloc (mirall) que conté el codi font i binaris, entre altres recursos.

## Referències

* ↑ http://www.unix.com/man-page/all/8/lsof/
* ↑ http://people.freebsd.org/~abelles/%5BEnllaç+no+actiu%5D