Jak dowiedzieć się, kto używa pliku w systemie Linux
W tym artykule wyjaśnimy, jak dowiedzieć się, kto używa określonego pliku w systemie Linux. Pomoże Ci to poznać użytkownika systemu lub proces korzystający z otwartego pliku.
Możemy użyć polecenia lsof, aby dowiedzieć się, czy ktoś używa pliku, a jeśli tak, to kto. Odczytuje pamięć jądra w poszukiwaniu otwartych plików i pomaga wyświetlić listę wszystkich otwartych plików. W tym przypadku otwarty plik może być zwykłym plikiem, katalogiem, specjalnym plikiem blokowym, specjalnym plikiem znakowym, strumieniem, plikiem sieciowym i wieloma innymi – ponieważ w Linuksie wszystko jest plikiem.
Lsof jest używany w systemie plików do identyfikowania, kto używa plików w tym systemie plików. Możesz uruchomić polecenie lsof w systemie plików Linux, a dane wyjściowe identyfikują właściciela i informacje o procesie dla procesów korzystających z pliku, jak pokazano na poniższych wynikach.
lsof /dev/null
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1480 tecmint 0r CHR 1,3 0t0 6 /dev/null
sh 1501 tecmint 0r CHR 1,3 0t0 6 /dev/null
sh 1501 tecmint 1w CHR 1,3 0t0 6 /dev/null
dbus-daem 1530 tecmint 0u CHR 1,3 0t0 6 /dev/null
xfce4-ses 1603 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfce4-ses 1603 tecmint 1w CHR 1,3 0t0 6 /dev/null
at-spi-bu 1604 tecmint 0r CHR 1,3 0t0 6 /dev/null
dbus-daem 1609 tecmint 0u CHR 1,3 0t0 6 /dev/null
at-spi2-r 1611 tecmint 0u CHR 1,3 0t0 6 /dev/null
xfconfd 1615 tecmint 0u CHR 1,3 0t0 6 /dev/null
xfwm4 1624 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfwm4 1624 tecmint 1w CHR 1,3 0t0 6 /dev/null
xfce4-pan 1628 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfce4-pan 1628 tecmint 1w CHR 1,3 0t0 6 /dev/null
Thunar 1630 tecmint 0r CHR 1,3 0t0 6 /dev/null
Thunar 1630 tecmint 1w CHR 1,3 0t0 6 /dev/null
xfdesktop 1632 tecmint 0r CHR 1,3 0t0 6 /dev/null
xfdesktop 1632 tecmint 1w CHR 1,3 0t0 6 /dev/null
....
Aby wyświetlić listę otwartych plików specyficznych dla użytkownika, uruchom następujące polecenie, zamień tecmint
na rzeczywistą nazwę użytkownika.
lsof -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1480 tecmint cwd DIR 8,3 4096 2 /
systemd 1480 tecmint rtd DIR 8,3 4096 2 /
systemd 1480 tecmint txt REG 8,3 1595792 3147496 /lib/systemd/systemd
systemd 1480 tecmint mem REG 8,3 1700792 3150525 /lib/x86_64-linux-gnu/libm-2.27.so
systemd 1480 tecmint mem REG 8,3 121016 3146329 /lib/x86_64-linux-gnu/libudev.so.1.6.9
systemd 1480 tecmint mem REG 8,3 84032 3150503 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0
systemd 1480 tecmint mem REG 8,3 43304 3150514 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1
systemd 1480 tecmint mem REG 8,3 34872 2497970 /usr/lib/x86_64-linux-gnu/libargon2.so.0
systemd 1480 tecmint mem REG 8,3 432640 3150484 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
systemd 1480 tecmint mem REG 8,3 18680 3150450 /lib/x86_64-linux-gnu/libattr.so.1.1.0
systemd 1480 tecmint mem REG 8,3 18712 3150465 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
systemd 1480 tecmint mem REG 8,3 27112 3150489 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd 1480 tecmint mem REG 8,3 14560 3150485 /lib/x86_64-linux-gnu/libdl-2.27.so
...
Innym ważnym zastosowaniem lsof jest sprawdzenie procesu nasłuchującego na określonym porcie. Na przykład zidentyfikuj proces nasłuchujący na porcie 80 za pomocą następującego polecenia.
sudo lsof -i TCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 903 root 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1320 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1481 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1482 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1493 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1763 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2027 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2029 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2044 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 3199 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 3201 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
Uwaga: ponieważ lsof odczytuje pamięć jądra podczas wyszukiwania otwartych plików, szybkie zmiany w pamięci jądra mogą skutkować nieprzewidywalnymi wynikami. Jest to jedna z głównych wad używania polecenia lsof.
Więcej informacji znajdziesz na stronie podręcznika lsof:
man lsof
To wszystko! W tym artykule wyjaśniliśmy, jak sprawdzić, kto używa określonego pliku w systemie Linux. Pokazaliśmy, jak zidentyfikować właściciela i informacje o procesie dla procesów za pomocą otwartego pliku. Skorzystaj z poniższego formularza opinii, aby skontaktować się z nami w przypadku jakichkolwiek pytań lub komentarzy.