Εισαγωγή στο Λσοφ

Στο Linux, πολλά αντικείμενα θεωρούνται αρχείο, ανεξάρτητα από το αν το αντικείμενο είναι στην πραγματικότητα αρχείο, συσκευή, κατάλογος ή υποδοχή. Η καταχώριση ενός αρχείου είναι εύκολη, υπάρχει το ενσωματωμένο κέλυφος lsγια αυτό. Τι θα γινόταν όμως αν ένας χρήστης ήθελε να δει ποια αρχεία ανοίγουν αυτήν τη στιγμή από τη διαδικασία του διακομιστή web; Ή αν αυτός ο χρήστης ήθελε να μάθει ποια αρχεία ανοίγονται σε έναν συγκεκριμένο κατάλογο; Εκεί lsofμπαίνει στο παιχνίδι. Φανταστείτε lsofως ένα lsμε την προσθήκη "ανοιχτών αρχείων".

Λάβετε υπόψη ότι ενώ τα BSD έχουν διαφορετικό βοηθητικό πρόγραμμα για αυτήν τη δουλειά fstat, πολλές άλλες γεύσεις Unix (για παράδειγμα το Solaris) διαθέτουν επίσης lsof. Οι επιλογές και οι σημαίες είναι διαφορετικές στις άλλες πλατφόρμες, καθώς και η εμφάνιση της εξόδου, αλλά γενικά οι γνώσεις σε αυτό το άρθρο θα πρέπει να ισχύουν και για αυτές.

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

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Αυτές οι στήλες σημαίνουν τα εξής:

  • ΕΝΤΟΛΗ - Η διαδικασία στην οποία ανήκει ένα ανοιχτό αρχείο, σε αυτό το παράδειγμα όλα σχετίζονται με το init.
  • PID - Ο αριθμός αναγνώρισης διεργασίας της εν λόγω διαδικασίας.
  • ΧΡΗΣΤΗΣ - Ο χρήστης κάτω από τον οποίο εκτελείται η διαδικασία. Για init, είναι σχεδόν πάντα root.
  • FD - Ο περιγραφέας αρχείου του αρχείου, ο πιο συνηθισμένος είναι:
    • cwd- Ο τρέχων κατάλογος εργασίας (μπορεί να παρατηρήσετε την ομοιότητα με την pwdεντολή που εκτυπώνει τον τρέχοντα κατάλογο εργασίας).
    • rtd - Ο ριζικός κατάλογος μιας διεργασίας.
    • txt- A text file, αυτό μπορεί να σημαίνει είτε ένα αρχείο διαμόρφωσης που σχετίζεται με τη διαδικασία είτε τον "πηγαίο κώδικα" που σχετίζεται (ή ανήκει) στη διαδικασία.
    • mem - Ένα λεγόμενο "αρχείο αντιστοίχισης μνήμης", που σημαίνει ένα τμήμα εικονικής μνήμης (ανάγνωση: RAM) που έχει εκχωρηθεί σε ένα αρχείο.
    • Ένας αριθμός - ο αριθμός αντιπροσωπεύει την πραγματική περιγραφή του αρχείου, ο χαρακτήρας μετά τον αριθμό είναι ο τρόπος με τον οποίο ανοίγει το αρχείο:
    • r - Ανάγνωση.
    • w - Γράψε.
    • u - Διάβασε και γράψε.
  • TYPE - Καθορίζει τον πραγματικό τύπο του αρχείου, τα πιο συνηθισμένα είναι:
    • REG - Ένα κανονικό αρχείο.
    • DIR - Ένας κατάλογος.
    • FIFO - Πρώτος μέσα, πρώτος έξω.
  • ΣΥΣΚΕΥΗ - Ο κύριος και ο δευτερεύων αριθμός της συσκευής που περιέχει το αρχείο.
  • SIZE - Το μέγεθος του αρχείου, σε byte.
  • NODE - Ο αριθμός inode του αρχείου.
  • NAME - Το όνομα του αρχείου.

Αυτό μπορεί να είναι λίγο συντριπτικό προς το παρόν, αλλά αν το δουλέψετε lsofμερικές φορές, θα βυθιστεί γρήγορα στον εγκέφαλό σας.

Όπως αναφέρθηκε παραπάνω, η έξοδος του lsofέχει μειωθεί εδώ. Χωρίς ορίσματα ή φίλτρα, lsofπαράγει εκατοντάδες γραμμές εξόδου που μόνο σύγχυση θα σας αφήσουν.

Υπάρχουν δύο βασικές προσεγγίσεις για την επίλυση αυτού του προβλήματος:

  • Χρησιμοποιήστε μία ή περισσότερες από τις lsofεπιλογές της γραμμής εντολών για να περιορίσετε τα αποτελέσματα.
  • Διοχετεύστε την έξοδο μέσω, για παράδειγμα, grep.

Αν και η τελευταία επιλογή μπορεί να ακούγεται πιο άνετη, καθώς δεν θα χρειαστεί να απομνημονεύσετε τις lsofεπιλογές της γραμμής εντολών, γενικά δεν είναι τόσο ευέλικτη και αποτελεσματική, επομένως θα παραμείνουμε στην πρώτη.

Ας φανταστούμε ότι θέλετε να ανοίξετε ένα αρχείο με το αγαπημένο σας πρόγραμμα επεξεργασίας κειμένου και ότι το πρόγραμμα επεξεργασίας κειμένου σας λέει ότι μπορεί να ανοίξει μόνο σε λειτουργία μόνο για ανάγνωση επειδή ένα άλλο πρόγραμμα έχει ήδη πρόσβαση σε αυτό. lsofθα σας βοηθήσει να μάθετε ποιος είναι ο δράστης:

lsof /path/to/your/file

Αυτό θα παράγει μια έξοδο παρόμοια με αυτό:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Προφανώς, ξεχάσατε να κλείσετε και παλαιότερη συνεδρία! Ένα πολύ παρόμοιο πρόβλημα συμβαίνει όταν προσπαθείτε να αποπροσαρτήσετε ένα κοινόχρηστο στοιχείο NFS και umountσας λέει ότι δεν μπορεί επειδή κάτι εξακολουθεί να έχει πρόσβαση στον προσαρτημένο φάκελο. Και πάλι, lsofμπορεί να σας βοηθήσει να εντοπίσετε τον ένοχο:

lsof +D /path/to/your/directory/

Προσέξτε την τελευταία κάθετο, αυτό είναι σημαντικό. Διαφορετικά, lsofθα υποθέσουμε ότι εννοείτε ένα κανονικό αρχείο. Μην σας μπερδεύει το +μπροστινό μέρος της σημαίας - lsofέχει τόσες πολλές επιλογές γραμμής εντολών που χρειάζεται +εκτός από τις πιο συνηθισμένες -. Η έξοδος θα μοιάζει με αυτό:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

Αυτό σημαίνει ότι η διαδικασία mocp, με το PID 5637, που ανήκει στον χρήστη musicέχει ανοίξει ένα αρχείο που ονομάζεται RMS_GNU_SONG.ogg. Ωστόσο, ακόμη και μετά το κλείσιμο αυτής της διαδικασίας, εξακολουθεί να υπάρχει πρόβλημα - δεν είναι δυνατή η αποπροσάρτηση του τόμου NFS.

lsofέχει μια -cσημαία που εμφανίζει αρχεία που έχουν ανοίξει ένα αυθαίρετο όνομα διεργασίας.

lsof -c mocp

Αυτό θα παράγει ένα αποτέλεσμα που μοιάζει με αυτό:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

Σε αυτό το παράδειγμα, υπάρχει μια άλλη περίπτωση mocpεκτέλεσης, η οποία σας εμποδίζει να αποσυνδέσετε το κοινόχρηστο στοιχείο. Μετά τον τερματισμό αυτής της διαδικασίας, θέλετε να βεβαιωθείτε ότι ο χρήστης musicδεν έχει ανοιχτά άλλα δυνητικά προβληματικά αρχεία. lsofέχει μια -uσημαία για την εμφάνιση αρχείων που έχουν ανοίξει από έναν συγκεκριμένο χρήστη. Θυμηθείτε, ένα αρχείο δεν είναι πάντα απλώς ένα κανονικό αρχείο στον σκληρό σας δίσκο!

lsof -u music

Μπορείτε επίσης να περάσετε πολλούς χρήστες, διαχωρισμένους με κόμματα:

lsof -u music,moremusic

Μια σημαντική σημείωση σχετικά με την προεπιλεγμένη συμπεριφορά του lsof: τα αποτελέσματα βασίζονται στο Ή , πράγμα που σημαίνει ότι θα δείτε αποτελέσματα αρχείων που ανοίγονται από διεργασίες που ανήκουν είτε στον χρήστη musicείτε στον χρήστη moremusic. Εάν θέλετε να δείτε αποτελέσματα που αντιστοιχούν σε διαδικασίες που ανήκουν και στους δύο χρήστες, τότε θα πρέπει να περάσετε τη σημαία -a:

lsof -au music, moremusic

Εφόσον και οι δύο χρήστες ανήκουν στην ομάδα musicusers, μπορείτε επίσης να παραθέσετε αρχεία με βάση την ομάδα:

lsof -g musicusers

Μπορείτε επίσης να συνδυάσετε σημαίες γραμμής εντολών:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

Στην τελευταία γραμμή, προσθέσαμε μια άλλη ειδική σημαία - ^, η οποία σημαίνει ένα λογικό ΟΧΙ . Εάν η έξοδος είναι άδεια μετά την εκτέλεση αυτής της εντολής, τότε η αποπροσάρτηση πιθανότατα θα είναι επιτυχής.

Στα προηγούμενα παραδείγματα, εξετάσαμε κυρίως τα κανονικά αρχεία. Τι θα λέγατε για τις υποδοχές και τις συνδέσεις δικτύου;

Για να παραθέσετε όλες τις τρέχουσες συνδέσεις δικτύου lsofέχει τη -iσημαία:

lsof -i

Το αποτέλεσμα μοιάζει με αυτό που έχουμε δει μέχρι τώρα...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... εκτός από μία διαφορά: αντί για ονόματα αρχείων ή καταλόγους, η στήλη NAMEεμφανίζει τώρα πληροφορίες σύνδεσης. Κάθε σύνδεση αποτελείται από τα ακόλουθα μέρη:

  • Πρωτόκολλο.
  • Τοπικό όνομα κεντρικού υπολογιστή.
  • Θύρα πηγής της σύνδεσης.
  • Όνομα DNS προορισμού.
  • Λιμάνι προορισμού.
  • Κατάσταση της σύνδεσης.

Όπως και με πολλά άλλα εργαλεία, μπορείτε να εξαιρεθείτε από την επίλυση ονομάτων και θυρών DNS ( -nκαι -P, αντίστοιχα). Η σημαία -iλαμβάνει πρόσθετες παραμέτρους. Μπορείτε να καθορίσετε εάν θα εμφανίζονται ή όχι tcp, udpή icmpσυνδέσεις ή ορισμένες θύρες:

lsof -i :25
or
lsof -i :smtp

Και πάλι, οι παράμετροι μπορούν να συνδυαστούν. Το παρακάτω παράδειγμα...

lsof -i tcp:80

... θα σας δείξει μόνο συνδέσεις TCP χρησιμοποιώντας τη θύρα 80. Μπορείτε επίσης να το συνδυάσετε με τις επιλογές που γνωρίζετε ήδη από τα "κλασικά" αρχεία:

lsof -a -u httpd -i tcp

Αυτό θα σας δείξει όλες τις συνδέσεις TCP που άνοιξε ο χρήστης httpd. Σημειώστε τη -aσημαία, η οποία αλλάζει την προεπιλεγμένη συμπεριφορά του lsof(όπως αναφέρθηκε προηγουμένως). Όπως με τα περισσότερα εργαλεία γραμμής εντολών, μπορείτε να πάτε εξαιρετικά βαθιά. Τα παρακάτω θα σας εμφανίσουν μόνο συνδέσεις TCP των οποίων η κατάσταση είναι "ΕΓΚΑΤΑΣΤΑΣΗ":

lsof -i -s TCP:ESTABLISHED

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

Αφήστε ένα σχόλιο

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

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

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα