Πώς να μάθετε ποιος χρησιμοποιεί ένα αρχείο στο Linux


Σε αυτό το άρθρο, θα εξηγήσουμε πώς μπορείτε να μάθετε ποιος χρησιμοποιεί ένα συγκεκριμένο αρχείο στο Linux. Αυτό θα σας βοηθήσει να γνωρίζετε τον χρήστη του συστήματος ή τη διαδικασία που χρησιμοποιεί ένα ανοιχτό αρχείο.

Μπορούμε να χρησιμοποιήσουμε την εντολή lsof για να γνωρίζουμε αν κάποιος χρησιμοποιεί ένα αρχείο και αν χρησιμοποιεί, ποιος. Διαβάζει τη μνήμη του πυρήνα στην αναζήτησή του για ανοιχτά αρχεία και σας βοηθά να παραθέσετε όλα τα ανοιχτά αρχεία. Σε αυτήν την περίπτωση, ένα ανοιχτό αρχείο μπορεί να είναι ένα κανονικό αρχείο, ένας κατάλογος, ένα ειδικό αρχείο μπλοκ, ένα ειδικό αρχείο χαρακτήρων, μια ροή, ένα αρχείο δικτύου και πολλά άλλα – γιατί στο Linux όλα είναι ένα αρχείο.

Το Lsof χρησιμοποιείται σε ένα σύστημα αρχείων για να προσδιορίσει ποιος χρησιμοποιεί αρχεία σε αυτό το σύστημα αρχείων. Μπορείτε να εκτελέσετε την εντολή lsof στο σύστημα αρχείων Linux και η έξοδος προσδιορίζει τον ιδιοκτήτη και τις πληροφορίες διεργασίας για διεργασίες που χρησιμοποιούν το αρχείο, όπως φαίνεται στην ακόλουθη έξοδο.

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. Δείξαμε πώς να αναγνωρίζουμε τον ιδιοκτήτη και τις πληροφορίες επεξεργασίας για διεργασίες χρησιμοποιώντας ένα ανοιχτό αρχείο. Χρησιμοποιήστε την παρακάτω φόρμα σχολίων για να επικοινωνήσετε μαζί μας για τυχόν ερωτήσεις ή σχόλια.