GNU/Linux >> Znalost Linux >  >> Linux

Jak vypsat seznam otevřených deskriptorů souborů (a souborů, na které odkazují) v mé aktuální relaci bash

Ano, zobrazí se seznam všech otevřených deskriptorů souborů:

$ ls -la /proc/$$/fd
total 0
dr-x------ 2 isaac isaac  0 Dec 28 00:56 .
dr-xr-xr-x 9 isaac isaac  0 Dec 28 00:56 ..
lrwx------ 1 isaac isaac 64 Dec 28 00:56 0 -> /dev/pts/6
lrwx------ 1 isaac isaac 64 Dec 28 00:56 1 -> /dev/pts/6
lrwx------ 1 isaac isaac 64 Dec 28 00:56 2 -> /dev/pts/6
lrwx------ 1 isaac isaac 64 Dec 28 00:56 255 -> /dev/pts/6
l-wx------ 1 isaac isaac 64 Dec 28 00:56 4 -> /home/isaac/testfile.txt

Samozřejmě, jako obvykle:0 je stdin, 1 je stdout a 2 je stderr.
4. je v tomto případě otevřený soubor (k zápisu).


Za předpokladu, že chcete vypsat seznam deskriptorů souborů, které jsou připojeny k libovolnému terminálu, můžete použít lsof /fuser nebo podobně jako:

$ lsof -p $$ 2>/dev/null | awk '$NF ~ /\/pts\//'
bash    32406 foobar    0u   CHR 136,31      0t0      34 /dev/pts/31
bash    32406 foobar    1u   CHR 136,31      0t0      34 /dev/pts/31
bash    32406 foobar    2u   CHR 136,31      0t0      34 /dev/pts/31
bash    32406 foobar    3u   CHR 136,31      0t0      34 /dev/pts/31
bash    32406 foobar  255u   CHR 136,31      0t0      34 /dev/pts/31

Tyto nástroje v podstatě analyzují /proc , takže máte přístup k /proc/$$/fd/ také např.:

ls /proc/$$/fd/*

lsof -a -p $$

Pouze síťový fd:

lsof -i -a -p $$

Linux
  1. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  2. Jak získám absolutní adresář souboru v bash?

  3. Jak napsat bash skript nebo automatizovat otevření vi a upravit dokument?

  1. The Bash ‘?

  2. Odkazuje výstup příkazu `tty` a soubor `/dev/tty` na řídicí terminál aktuálního procesu Bash?

  3. Jak přizpůsobit automatické doplňování Bash tak, aby vypisovalo soubory v jiném adresáři?

  1. Jak vypsat popisy otevřených souborů (a soubory, na které odkazují) v aktuální relaci Bash?

  2. Jak vypsat rekurzivní velikosti souborů a adresářů v adresáři?

  3. Jak vypsat velikost každého souboru a adresáře a seřadit podle sestupné velikosti v Bash?