/proc - Λάβετε πληροφορίες για τη διαδικασία και το υλικό του Linux


Σήμερα, θα εμβαθύνουμε στα περιεχόμενα του καταλόγου /proc για να κατανοήσουμε καλύτερα τις λειτουργίες του. Είναι σημαντικό να σημειωθεί ότι ο κατάλογος /proc είναι ένα κοινό χαρακτηριστικό σε όλες τις διανομές Linux, ανεξάρτητα από τη γεύση ή την αρχιτεκτονική τους.

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

Είναι ένα εικονικό σύστημα αρχείων που περιέχει πληροφορίες σχετικά με διεργασίες και άλλα δεδομένα που σχετίζονται με το σύστημα στα procfs. Αυτό το σύστημα αρχείων αντιστοιχίζεται στον κατάλογο /proc και προσαρτάται κατά τη διαδικασία εκκίνησης του συστήματος.

Τι είναι το /proc στο Linux

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

Για να προβάλετε μια πλήρη λίστα αρχείων και καταλόγων στο σύστημα αρχείων /proc, μπορείτε να χρησιμοποιήσετε την εντολή ls όπως φαίνεται.

ls /proc

Πλοήγηση /proc στο Linux

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

cd /proc
ls

Αυτοί οι αριθμημένοι κατάλογοι αντιπροσωπεύουν τις διεργασίες, πιο γνωστές ως αναγνωριστικά διεργασιών (PID), και μέσα σε αυτές, μια εντολή που τις καταλαμβάνει. Τα αρχεία περιέχουν πληροφορίες συστήματος όπως μνήμη (meminfo), πληροφορίες CPU (cpuinfo) και διαθέσιμα συστήματα αρχείων.

Ακολουθούν μερικά βασικά αρχεία και κατάλογοι που θα συναντήσετε:

  • /proc/cpuinfo – Καταχωρίστε πληροφορίες σχετικά με τις CPU στο σύστημα, όπως το μοντέλο, την ταχύτητα και τον αριθμό των πυρήνων.
  • /proc/meminfo – Παραθέστε λεπτομέρειες σχετικά με τη χρήση της μνήμης και στατιστικά στοιχεία που περιέχουν τη συνολική ποσότητα μνήμης, την ελεύθερη μνήμη και τη μνήμη που χρησιμοποιείται από κάθε διεργασία.
  • /proc/filesystems – Περιέχει μια λίστα με όλα τα συστήματα αρχείων που υποστηρίζονται από τον πυρήνα.
  • /proc/sys – Λίστα παραμέτρων διαμόρφωσης και χρόνου εκτέλεσης για τον πυρήνα.
  • /proc/loadavg – Εμφάνιση μέσου όρου φόρτωσης συστήματος σε διαφορετικά χρονικά διαστήματα όπως 1, 5 και 15 λεπτά.
  • /proc/self – Ένας συμβολικός σύνδεσμος προς τον κατάλογο της διαδικασίας.
  • /proc/stat – Περιέχει μια ποικιλία στατιστικών στοιχείων σχετικά με το σύστημα, όπως τον αριθμό των διεργασιών που εκτελούνται, τον αριθμό των διακοπών και το χρόνο που δαπανάται σε κάθε κατάσταση της CPU.
  • /proc/uptime – Περιλαμβάνει τον χρόνο λειτουργίας του συστήματος.
  • /proc/PID – Περιέχει πληροφορίες σχετικά με μια συγκεκριμένη διαδικασία, όπου το PID είναι το αναγνωριστικό διεργασίας.

Εξαγωγή πληροφοριών συστήματος

Το /proc/meminfo χρησιμοποιείται για την εμφάνιση πληροφοριών σχετικά με τη χρήση της μνήμης και τα στατιστικά στοιχεία ενός συστήματος Linux, το οποίο περιέχει ένα στιγμιότυπο διαφόρων μετρήσεων που σχετίζονται με τη μνήμη, οι οποίες μπορούν να είναι χρήσιμες για την παρακολούθηση της απόδοσης του συστήματος και της χρήσης πόρων .

cat /proc/meminfo

Όπως μπορείτε να δείτε, το /proc/meminfo περιέχει μια δέσμη πληροφοριών σχετικά με τη μνήμη του συστήματός σας, συμπεριλαμβανομένου του συνολικού διαθέσιμου ποσού (σε kb) και του δωρεάν ποσού στα δύο πρώτα γραμμές.

Η εκτέλεση της εντολής cat σε οποιοδήποτε από τα αρχεία στο /proc θα εξάγει τα περιεχόμενά τους. Πληροφορίες σχετικά με τυχόν αρχεία είναι διαθέσιμες στη σελίδα man εκτελώντας:

man 5 /proc/<filename>

Θα σας δώσω μια γρήγορη ανακεφαλαίωση των αρχείων /proc's:

  • /proc/cmdline – Πληροφορίες γραμμής εντολών πυρήνα.
  • /proc/console – Πληροφορίες σχετικά με τις τρέχουσες κονσόλες συμπεριλαμβανομένου του tty.
  • /proc/devices – Προγράμματα οδήγησης συσκευών που έχουν διαμορφωθεί αυτήν τη στιγμή για τον πυρήνα που εκτελείται.
  • /proc/dma – Πληροφορίες σχετικά με τα τρέχοντα κανάλια DMA.
  • /proc/fb – Συσκευές Framebuffer.
  • /proc/filesystems – Τρέχοντα συστήματα αρχείων που υποστηρίζονται από τον πυρήνα.
  • /proc/iomem – Τρέχων χάρτης μνήμης συστήματος για συσκευές.
  • /proc/ioports – Εγγεγραμμένες περιοχές θυρών για επικοινωνία εισόδου-εξόδου με τη συσκευή.
  • /proc/loadavg – Μέσος όρος φόρτωσης συστήματος.
  • /proc/locks – Αρχεία κλειδωμένα αυτήν τη στιγμή από τον πυρήνα.
  • /proc/meminfo – Πληροφορίες σχετικά με τη μνήμη συστήματος (δείτε παραπάνω παράδειγμα).
  • /proc/misc – Διάφορα προγράμματα οδήγησης που έχουν εγγραφεί για διάφορες κύριες συσκευές.
  • /proc/modules – Φορτωμένες λειτουργικές μονάδες πυρήνα.
  • /proc/mounts – Λίστα όλων των στηριγμάτων που χρησιμοποιούνται από το σύστημα.
  • /proc/partitions – Λεπτομερείς πληροφορίες σχετικά με τα διαμερίσματα που είναι διαθέσιμα στο σύστημα.
  • /proc/pci – Πληροφορίες για κάθε συσκευή PCI.
  • /proc/stat – Εγγραφή ή διάφορα στατιστικά στοιχεία που διατηρούνται από την τελευταία επανεκκίνηση.
  • /proc/swap – Πληροφορίες σχετικά με το χώρο ανταλλαγής.
  • /proc/uptime – Πληροφορίες χρόνου λειτουργίας (σε δευτερόλεπτα).
  • /proc/version – Εγκατεστημένη έκδοση πυρήνα, έκδοση gcc και διανομή Linux.

Εξαγωγή πληροφοριών διαδικασίας

Μέσα στους αριθμημένους καταλόγους /proc θα βρείτε μερικά αρχεία και συνδέσμους. Θυμηθείτε ότι οι αριθμοί αυτών των καταλόγων συσχετίζονται με το PID της εντολής που εκτελείται σε αυτούς.

Για παράδειγμα, η πλοήγηση στο /proc/ παρέχει λεπτομέρειες όπως:

  • /proc//cmdline – Ορίσματα γραμμής εντολών που χρησιμοποιούνται για την έναρξη της διαδικασίας.
  • /proc//status – Λεπτομερείς πληροφορίες κατάστασης, συμπεριλαμβανομένης της χρήσης μνήμης και των στατιστικών διεργασιών.
  • /proc//fd – Συμβολικοί σύνδεσμοι προς αρχεία που ανοίγονται από τη διαδικασία.

Ας χρησιμοποιήσουμε ένα παράδειγμα για να προβάλουμε έναν φάκελο που ονομάζεται /proc/12.

cd /proc/12
ls

Αν τρέξω:

cat /proc/12/status

Παίρνω το εξής:

Λοιπόν, τι σημαίνει αυτό? Λοιπόν, το σημαντικό μέρος είναι στην κορυφή. Μπορούμε να δούμε από το αρχείο κατάστασης ότι αυτή η διαδικασία ανήκει στο rcu_tasks_rude_kthread. Η τρέχουσα κατάστασή του είναι αδρανής και η διαδικασία αναγνωριστικό είναι 12, προφανώς.

Μπορούμε επίσης να δούμε ποιος εκτελεί αυτό, καθώς το UID και το GID είναι 0, υποδεικνύοντας ότι αυτή η διαδικασία ανήκει στη ρίζα ισχυρός> χρήστης.

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

  • cmdline – γραμμή εντολών της διαδικασίας
  • περιβάλλον – περιβαλλοντικές μεταβλητές
  • fd – περιγραφείς αρχείων
  • όρια – περιέχει πληροφορίες σχετικά με τα όρια της διαδικασίας
  • βάσεις – σχετικές πληροφορίες

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

  • cwd – ένας σύνδεσμος προς τον τρέχοντα κατάλογο εργασίας της διαδικασίας
  • exe – σύνδεσμος προς το εκτελέσιμο αρχείο της διαδικασίας
  • root – σύνδεσμος προς τον κατάλογο εργασίας της διαδικασίας

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