Παραδείγματα εντολών 10 lsof (Λίστα ανοιχτών αρχείων) στο Linux
Αυτή είναι η συνεχιζόμενη σειρά εντολών Linux και σε αυτό το άρθρο, θα εξετάσουμε την εντολή lsof με πρακτικά παραδείγματα. Το lsof σημαίνει ότι το "LiSt Open Files" χρησιμοποιείται για να μάθουμε ποια αρχεία είναι ανοιχτά από ποια διαδικασία Linux.
Όπως όλοι γνωρίζουμε το Linux/Unix θεωρεί τα πάντα ως αρχείο (σωλήνες, πρίζες, κατάλογοι, συσκευές, κ.λπ.). Ένας από τους λόγους για να χρησιμοποιήσετε την εντολή lsof είναι όταν δεν είναι δυνατή η αποπροσάρτηση ενός δίσκου καθώς λέει ότι χρησιμοποιούνται τα αρχεία. Με τη βοήθεια της εντολής lsof, μπορούμε εύκολα να αναγνωρίσουμε τα αρχεία που χρησιμοποιούνται.
1. Καταχωρίστε όλα τα ανοιχτά αρχεία με την εντολή lsof
Στο παρακάτω παράδειγμα, θα εμφανιστεί μια μακρά λίστα με ανοιχτά αρχεία, μερικά από αυτά έχουν εξαχθεί για καλύτερη κατανόηση και εμφανίζει τις στήλες όπως Εντολή, PID, ΧΡΗΣΤΗΣ<, FD, TYPE, κ.λπ.
lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root 0u CHR 1,3 0t0 3764 /dev/null
init 1 root 1u CHR 1,3 0t0 3764 /dev/null
init 1 root 2u CHR 1,3 0t0 3764 /dev/null
init 1 root 3r FIFO 0,8 0t0 8449 pipe
init 1 root 4w FIFO 0,8 0t0 8449 pipe
init 1 root 5r DIR 0,10 0 1 inotify
init 1 root 6r DIR 0,10 0 1 inotify
init 1 root 7u unix 0xc1513880 0t0 8450 socket
Οι ενότητες και οι αξίες τους είναι αυτονόητες. Ωστόσο, θα εξετάσουμε με μεγαλύτερη ακρίβεια τις στήλες FD & TYPE.
FD – σημαίνει περιγραφή αρχείου και μπορεί να δει ορισμένες από τις τιμές ως:
- cwd τρέχων κατάλογος εργασίας
- rtd ριζικός κατάλογος
- txt κείμενο προγράμματος (κώδικας και δεδομένα)
- mem αρχείο με αντιστοίχιση μνήμης
Επίσης, στους αριθμούς στηλών FD όπως 1u υπάρχει ο πραγματικός περιγραφέας αρχείου και ακολουθείται από u,r,w της λειτουργίας του ως:
- r για πρόσβαση ανάγνωσης.
- w για πρόσβαση εγγραφής.
- u για πρόσβαση ανάγνωσης και εγγραφής.
ΤΥΠΟΣ – των αρχείων και η αναγνώρισή του.
- DIR – Κατάλογος
- REG – Κανονικό αρχείο
- CHR – Ειδικό αρχείο χαρακτήρων.
- FIFO – First In First Out
2. Καταχωρίστε τα Ανοιγμένα Αρχεία Ειδικά Χρήστη
Η παρακάτω εντολή θα εμφανίσει τη λίστα με όλα τα ανοιχτά αρχεία του χρήστη tecmint.
lsof -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1838 tecmint cwd DIR 253,0 4096 2 /
sshd 1838 tecmint rtd DIR 253,0 4096 2 /
sshd 1838 tecmint txt REG 253,0 532336 188129 /usr/sbin/sshd
sshd 1838 tecmint mem REG 253,0 19784 190237 /lib/libdl-2.12.so
sshd 1838 tecmint mem REG 253,0 122436 190247 /lib/libselinux.so.1
sshd 1838 tecmint mem REG 253,0 255968 190256 /lib/libgssapi_krb5.so.2.2
sshd 1838 tecmint mem REG 253,0 874580 190255 /lib/libkrb5.so.3.3
3. Βρείτε τις διεργασίες που εκτελούνται σε συγκεκριμένη θύρα
Για να μάθετε όλες τις εκτελούμενες διεργασίες Linux μιας συγκεκριμένης θύρας, απλώς χρησιμοποιήστε την ακόλουθη εντολή με την επιλογή -i. Το παρακάτω παράδειγμα θα εμφανίσει όλες τις εκτελούμενες διεργασίες της θύρας 22.
lsof -i TCP:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
4. Ανοίξτε τα αρχεία μόνο IPv4 & IPv6
Στο παρακάτω παράδειγμα εμφανίζεται μόνο τα αρχεία δικτύου IPv4 και IPv6 ανοιχτά με ξεχωριστές εντολές.
lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
5. Καταχωρίστε τα Open Files of TCP Port Ranges 1-1024
Για να παραθέσετε όλη την εκτελούμενη διαδικασία των ανοιχτών αρχείων του TCP Η θύρα κυμαίνεται από 1-1024.
lsof -i TCP:1-1024
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1838 tecmint 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
6. Εξαίρεση χρήστη με χαρακτήρα «^».
Εδώ, έχουμε εξαιρέσει τον χρήστη root. Μπορείτε να εξαιρέσετε έναν συγκεκριμένο χρήστη χρησιμοποιώντας το ‘^’ με την εντολή όπως φαίνεται παραπάνω.
lsof -i -u^root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep
rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146
rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
7. Μάθετε ποιος αναζητά Ποια αρχεία και εντολές;
Το παρακάτω παράδειγμα δείχνει ότι ο χρήστης tecmint χρησιμοποιεί εντολές όπως ο κατάλογος ping και /etc.
lsof -i -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1839 tecmint cwd DIR 253,0 12288 15 /etc
ping 2525 tecmint cwd DIR 253,0 12288 15 /etc
8. Καταχωρίστε όλες τις συνδέσεις δικτύου
Η ακόλουθη εντολή με την επιλογή “-i” εμφανίζει τη λίστα όλων των συνδέσεων δικτύου “LISTENING & ESTABLISHED”.
lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
master 1551 root 12u IPv4 12896 0t0 TCP localhost:smtp (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
clock-app 2362 narad 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)
chrome 2377 narad 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)
chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)
9. Αναζήτηση κατά PID
Το παρακάτω παράδειγμα δείχνει μόνο ποιανού το PID είναι 1 [Ένα].
lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so
10. Σκοτώστε όλη τη δραστηριότητα συγκεκριμένου χρήστη
Μερικές φορές μπορεί να χρειαστεί να σκοτώσετε όλες τις διαδικασίες για έναν συγκεκριμένο χρήστη. Η παρακάτω εντολή θα σκοτώσει όλες τις διεργασίες του χρήστη tecmint.
kill -9 `lsof -t -u tecmint`
Σημείωση: Εδώ, δεν είναι δυνατό να δοθούν παραδείγματα όλων των διαθέσιμων επιλογών, αυτός ο οδηγός είναι μόνο για να δείξει πώς μπορεί να χρησιμοποιηθεί η εντολή lsof. Μπορείτε να ανατρέξετε στη σελίδα χρήστη της εντολής lsof για να μάθετε περισσότερα σχετικά με αυτήν. Μοιραστείτε το εάν πιστεύετε ότι αυτό το άρθρο είναι χρήσιμο μέσα από το πλαίσιο σχολίων μας παρακάτω.