Linux에서 누가 파일을 사용하고 있는지 확인하는 방법
이 기사에서는 Linux에서 특정 파일을 사용하는 사람이 누구인지 알아내는 방법에 대해 설명합니다. 이는 열린 파일을 사용하는 시스템 사용자나 프로세스를 아는 데 도움이 됩니다.
lsof 명령을 사용하면 누군가 파일을 사용하고 있는지, 사용하고 있는지, 누구인지 알 수 있습니다. 열린 파일을 검색할 때 커널 메모리를 읽고 열려 있는 모든 파일을 나열하는 데 도움을 줍니다. 이 경우 열린 파일은 일반 파일, 디렉터리, 블록 특수 파일, 문자 특수 파일, 스트림, 네트워크 파일 등이 될 수 있습니다. Linux에서는 모든 것이 파일이기 때문입니다.
Lsof는 파일 시스템에서 해당 파일 시스템의 파일을 사용하는 사람을 식별하는 데 사용됩니다. Linux 파일 시스템에서 lsof 명령을 실행할 수 있으며 출력은 다음 출력에 표시된 대로 파일을 사용하는 프로세스의 소유자 및 프로세스 정보를 식별합니다.
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
....
사용자별 열린 파일을 나열하려면 다음 명령을 실행하여 tecmint
를 실제 사용자 이름으로 바꿉니다.
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
...
lsof의 또 다른 중요한 용도는 특정 포트에서 수신 대기하는 프로세스를 찾는 것입니다. 예를 들어 다음 명령을 사용하여 포트 80에서 수신 대기하는 프로세스를 식별합니다.
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)
참고: lsof는 열린 파일을 검색하면서 커널 메모리를 읽기 때문에 커널 메모리의 급격한 변화로 인해 예측할 수 없는 출력이 발생할 수 있습니다. 이는 lsof 명령 사용의 주요 단점 중 하나입니다.
자세한 내용은 lsof 매뉴얼 페이지를 참조하세요.
man lsof
그게 다야! 이 기사에서는 Linux에서 특정 파일을 사용하는 사람이 누구인지 확인하는 방법을 설명했습니다. 열린 파일을 사용하여 프로세스의 소유자 및 프로세스 정보를 식별하는 방법을 보여주었습니다. 질문이나 의견이 있는 경우 아래 피드백 양식을 사용하여 당사에 문의하십시오.