Middle
Πώς μπορούμε να μάθουμε με ποια αρχεία εργάζεται αυτήν τη στιγμή ένα πρόγραμμα στο Linux;
sobes.tech AI
Απάντηση από AI
Χρησιμοποιήστε το εργαλείο lsof (λίστα ανοικτών αρχείων).
# Βασική χρήση του lsof για εμφάνιση λίστας όλων των ανοικτών αρχείων
lsof
Για να λάβετε μια λίστα με ανοικτά αρχεία από μια συγκεκριμένη διαδικασία (ανά PID):
# Εμφάνιση λίστας ανοικτών αρχείων για τη διαδικασία με PID 1234
lsof -p 1234
Για να λάβετε μια λίστα με ανοικτά αρχεία από μια συγκεκριμένη εντολή (ανά όνομα):
# Εμφάνιση λίστας ανοικτών αρχείων για όλες τις διαδικασίες με το όνομα "nginx"
lsof -c nginx
Για να λάβετε μια λίστα με ανοικτά αρχεία από έναν συγκεκριμένο χρήστη:
# Εμφάνιση λίστας ανοικτών αρχείων για τον χρήστη "user1"
lsof -u user1
Επιπλέον σημαίες του lsof:
| Σημαία | Περιγραφή |
|---|---|
-i |
Εμφανίζει τις δικτυακές συνδέσεις (σωλήνες) |
-n |
Δεν μετατρέπει τις διευθύνσεις IP σε ονόματα υπολογιστών |
-P |
Δεν μετατρέπει τις θύρες σε ονόματα υπηρεσιών |
-r [N] |
Επανεκκινεί το lsof κάθε N δευτερόλεπτα |
Παράδειγμα χρήσης για να προσδιορίσετε ποια διαδικασία χρησιμοποιεί ένα συγκεκριμένο αρχείο:
# Ποια διαδικασία χρησιμοποιεί το αρχείο /var/log/syslog;
lsof /var/log/syslog
Η έξοδος του lsof περιλαμβάνει τις ακόλουθες στήλες:
- COMMAND: Το όνομα της εντολής που ξεκίνησε τη διαδικασία.
- PID: Αναγνωριστικό διαδικασίας.
- TID: Αναγνωριστικό νήματος (αν ισχύει).
- USER: Το όνομα χρήστη που ξεκίνησε τη διαδικασία.
- FD: Αντιπροσωπευτής αρχείου.
- TYPE: Τύπος κόμβου αρχείου (DIR, REG, FIFO, CHR, BLK, SOCK, κ.λπ.).
- DEVICE: Αναγνωριστικό συσκευής.
- SIZE/OFF: Μέγεθος αρχείου ή μετατόπιση.
- NODE: Αριθμός inode.
- NAME: Όνομα αρχείου ή διεύθυνση δικτύου.