Linux Professional Institute Learning Logo.
Mετάβαση στο κύριο περιεχόμενο
  • Αρχική
    • Διαθέσιμοι Πόροι
    • Μαθησιακά Υλικά LPI
    • Γίνε Συνεργάτης
    • Συνεργάτες Εκδόσεων
    • Γίνε Συνεργάτης Εκδόσεων
    • Σχετικά
    • FAQ
    • Συνεργάτες
    • Roadmap
    • Επικοινωνία
  • LPI.org
4.3 Μάθημα 2
Θέμα 1: Η κοινότητα Linux και μια καριέρα στον Ανοιχτό Κώδικα
1.1 Εξέλιξη του Linux και Δημοφιλή Λειτουργικά Συστήματα
  • 1.1 Μάθημα 1
1.2 Κύριες Εφαρμογές Ανοιχτού Κώδικα
  • 1.2 Μάθημα 1
1.3 Λογισμικό Ανοιχτού Κώδικα και Αδειοδότηση
  • 1.3 Μάθημα 1
1.4 Δεξιότητες ICT και Εργασία στο Linux
  • 1.4 Μάθημα 1
Θέμα 2: Βρίσκοντας το Δρόμο σας σε ένα Σύστημα Linux
2.1 Βασικά Στοιχεία Γραμμής Εντολών
  • 2.1 Μάθημα 1
  • 2.1 Μάθημα 2
2.2 Χρήση της Γραμμής Εντολών για Λήψη Βοήθειας
  • 2.2 Μάθημα 1
2.3 Χρήση Καταλόγων και Παράθεση Αρχείων
  • 2.3 Μάθημα 1
  • 2.3 Μάθημα 2
2.4 Δημιουργία, Μετακίνηση και Διαγραφή Αρχείων
  • 2.4 Μάθημα 1
Θέμα 3: Η Δύναμη της Γραμμής Εντολών
3.1 Αρχειοθέτηση Αρχείων στη Γραμμή Εντολών
  • 3.1 Μάθημα 1
3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία
  • 3.2 Μάθημα 1
  • 3.2 Μάθημα 2
3.3 Μετατροπή Εντολών σε Σενάριο
  • 3.3 Μάθημα 1
  • 3.3 Μάθημα 2
Θέμα 4: Το Λειτουργικό Σύστημα Linux
4.1 Επιλογή Λειτουργικού Συστήματος
  • 4.1 Μάθημα 1
4.2 Κατανόηση του Υλικού του Υπολογιστή
  • 4.2 Μάθημα 1
4.3 Πού Αποθηκεύονται τα Δεδομένα
  • 4.3 Μάθημα 1
  • 4.3 Μάθημα 2
4.4 Ο Υπολογιστής σας στο Δίκτυο
  • 4.4 Μάθημα 1
Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών
  • 5.1 Μάθημα 1
5.2 Δημιουργία Χρηστών και Ομάδων
  • 5.2 Μάθημα 1
5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων
  • 5.3 Μάθημα 1
5.4 Ειδικοί Κατάλογοι και Αρχεία
  • 5.4 Μάθημα 1
How to get certified
  1. Θέμα 4: Το Λειτουργικό Σύστημα Linux
  2. 4.3 Πού Αποθηκεύονται τα Δεδομένα
  3. 4.3 Μάθημα 2

4.3 Μάθημα 2

Πιστοποιητικό:

Linux Essentials

Έκδοση:

1.6

Θέμα:

4 Το Λειτουργικό Σύστημα Linux

Σκοπός:

4.3 Πού Αποθηκεύονται τα Δεδομένα

Μάθημα:

2 απο 2

Εισαγωγή

Αφού εξερευνήσουμε προγράμματα και τα αρχεία παραμετροποίησής τους, σε αυτό το μάθημα θα μάθουμε πώς εκτελούνται οι εντολές ως processes. Ομοίως, θα σχολιάσουμε τα μηνύματα του συστήματος, τη χρήση της προσωρινής μνήμης δακτυλίου πυρήνα [kernel ring buffer] και τον τρόπο με τον οποίο η άφιξη του systemd και του journal daemon — journald — άλλαξαν τους τρόπους που είχαν γίνει μέχρι τώρα σχετικά με το logging του συστήματος.

Processes

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

Τα processes υπάρχουν σε μια ιεραρχία. Μετά τη φόρτωση του πυρήνα στη μνήμη κατά την εκκίνηση, ξεκινά το πρώτο process, το οποίο — με τη σειρά του — ξεκινά άλλα processes, τα οποία, πάλι, μπορούν να ξεκινήσουν άλλα processes. Κάθε process έχει ένα μοναδικό αναγνωριστικό (PID) και ένα αναγνωριστικό του parnet process (PPID). Αυτοί είναι θετικοί ακέραιοι αριθμοί που εκχωρούνται με διαδοχική σειρά.

Δυναμική Εξερεύνηση Processes: top

Μπορείτε να λάβετε μια δυναμική λίστα όλων των τρεχουσών processes με την εντολή top:

$ top

top - 11:10:29 up  2:21,  1 user,  load average: 0,11, 0,20, 0,14
Tasks:  73 total,   1 running,  72 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,3 sy,  0,0 ni, 99,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem :  1020332 total,   909492 free,    38796 used,    72044 buff/cache
KiB Swap:  1046524 total,  1046524 free,        0 used.   873264 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
   436 carol     20   0   42696   3624   3060 R  0,7  0,4   0:00.30 top
     4 root      20   0       0      0      0 S  0,3  0,0   0:00.12 kworker/0:0
   399 root      20   0   95204   6748   5780 S  0,3  0,7   0:00.22 sshd
     1 root      20   0   56872   6596   5208 S  0,0  0,6   0:01.29 systemd
     2 root      20   0       0      0      0 S  0,0  0,0   0:00.00 kthreadd
     3 root      20   0       0      0      0 S  0,0  0,0   0:00.02 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S  0,0  0,0   0:00.00 kworker/u2:0
     7 root      20   0       0      0      0 S  0,0  0,0   0:00.08 rcu_sched
     8 root      20   0       0      0      0 S  0,0  0,0   0:00.00 rcu_bh
     9 root      rt   0       0      0      0 S  0,0  0,0   0:00.00 migration/0
    10 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 lru-add-drain
    (...)

Όπως είδαμε παραπάνω, η top μπορεί επίσης να μας δώσει πληροφορίες σχετικά με την κατανάλωση μνήμης και CPU του συνολικού συστήματος καθώς και για κάθε process.

Η top επιτρέπει στον χρήστη κάποια αλληλεπίδραση.

Από προεπιλογή, η έξοδος ταξινομείται με βάση το ποσοστό του χρόνου CPU που χρησιμοποιείται από κάθε process με φθίνουσα σειρά. Αυτή η συμπεριφορά μπορεί να τροποποιηθεί πατώντας τα ακόλουθα πλήκτρα εντός της top:

M

Ταξινόμηση κατά χρήση μνήμης.

N

Ταξινόμηση κατά αριθμό ID του process.

T

Ταξινόμηση κατά χρόνο εκτέλεσης.

P

Ταξινόμηση κατά ποσοστό χρήσης CPU.

Για εναλλαγή μεταξύ φθίνουσας/αύξουσας σειράς απλώς πατήστε το R.

Tip

Μια πιο φανταχτερή και πιο φιλική προς το χρήστη έκδοση του top είναι το htop. Μια άλλη — ίσως πιο εξαντλητική — εναλλακτική είναι η atop. Εάν δεν είναι ήδη εγκατεστημένες στο σύστημά σας, σας προτείνω να χρησιμοποιήσετε τον package manager για να τα εγκαταστήσετε και να τα δοκιμάσετε.

Snapshot Processes: ps

Μια άλλη πολύ χρήσιμη εντολή για τη λήψη πληροφοριών σχετικά με τα processes είναι το ps. Ενώ το top παρέχει δυναμικές πληροφορίες, αυτές του ps είναι στατικές.

Εάν καλεστεί χωρίς επιλογές, η έξοδος του ps είναι αρκετά διακριτή και σχετίζεται μόνο με τα processes που συνδέονται με το τρέχον shell:

$ ps
  PID TTY          TIME CMD
 2318 pts/0    00:00:00 bash
 2443 pts/0    00:00:00 ps

Οι εμφανιζόμενες πληροφορίες έχουν να κάνουν με το αναγνωριστικό process (PID), το τερματικό στο οποίο εκτελείται το process (TTY), τον χρόνο της CPU που έλαβε το process (TIME) και την εντολή που ξεκίνησε τη διαδικασία (CMD).

Ένας χρήσιμος διακόπτης για το ps είναι το -f που εμφανίζει μια λίστα πλήρους μορφής:

$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
carol     2318  1682  0 08:38 pts/1    00:00:00 bash
carol     2443  2318  0 08:46 pts/1    00:00:00 ps -f

Σε συνδυασμό με άλλους διακόπτες, το -f δείχνει τη σχέση μεταξύ parent και child processes:

$ ps -uf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
carol       2318  0.0  0.1  21336  5140 pts/1    Ss   08:38   0:00 bash
carol       2492  0.0  0.0  38304  3332 pts/1    R+   08:51   0:00  \_ ps -uf
carol       1780  0.0  0.1  21440  5412 pts/0    Ss   08:28   0:00 bash
carol       2291  0.0  0.7 305352 28736 pts/0    Sl+  08:35   0:00  \_ emacs index.en.adoc -nw
(...)

Ομοίως, το ps μπορεί να εμφανίσει το ποσοστό της μνήμης που χρησιμοποιείται κατά την στιγμή που καλείται με το διακόπτη -v:

$ ps -v
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
 1163 tty2     Ssl+   0:00      1    67 201224 5576  0.1 /usr/lib/gdm3/gdm-x-session (...)
 (...)
Note

Μια άλλη οπτικά ελκυστική εντολή που δείχνει την ιεραρχία των processes είναι το pstree. Αποστέλλεται με όλες τις μεγάλες διανομές.

Πληροφορίες Process στον Κατάλογο /proc

Έχουμε ήδη δει το σύστημα αρχείων /proc. Το /proc περιλαμβάνει έναν αριθμημένο υποκατάλογο για κάθε process που εκτελείται στο σύστημα (ο αριθμός είναι το PID του process):

carol@debian:~# ls /proc
1    108  13   17   21   27   354  41   665  8    9
10   109  14   173  22   28   355  42   7    804  915
103  11   140  18   23   29   356  428  749  810  918
104  111  148  181  24   3    367  432  75   811
105  112  149  19   244  349  370  433  768  83
106  115  15   195  25   350  371  5    797  838
107  12   16   2    26   353  404  507  798  899
(...)

Έτσι, όλες οι πληροφορίες σχετικά με ένα συγκεκριμένο process περιλαμβάνονται στον κατάλογό του. Ας παραθέσουμε τα περιεχόμενα του πρώτου process — εκείνου του οποίου το PID είναι 1 (η έξοδος έχει περικοπεί για αναγνωσιμότητα):

# ls /proc/1/
attr        cmdline          environ  io        mem	      ns
autogroup   comm             exe      limits    mountinfo numa_maps
auxv        coredump_filter  fd       loginuid  mounts    oom_adj
...

Μπορείτε να ελέγξετε — για παράδειγμα — το εκτέλεσιμο process:

# cat /proc/1/cmdline; echo
/sbin/init

Όπως μπορείτε να δείτε, το δυαδικό πρόγραμμα που ξεκίνησε την ιεραρχία των processes ήταν το /sbin/init.

Note

Οι εντολές μπορούν να συνδεθούν με το ερωτηματικό (;). Το θέμα στη χρήση της παραπάνω εντολής echo είναι να παρέχετε μια νέα γραμμή. Δοκιμάστε και εκτελέστε απλά το cat /proc/1/cmdline για να δείτε τη διαφορά.

Ο Φόρτος Εργασίας Συστήματος

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

$ uptime
 22:12:54 up 13 days, 20:26,  1 user,  load average: 2.91, 1.59, 0.39

Τα τρία τελευταία ψηφία υποδεικνύουν τον μέσο όρο φόρτου του συστήματος για το τελευταίο λεπτό (2,91), τα τελευταία πέντε λεπτά (1,59) και τα τελευταία δεκαπέντε λεπτά (0,39), αντίστοιχα.

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

Logging Συστήματος και Ανταλλαγή Μηνυμάτων Συστήματος

Μόλις ο πυρήνας και τα processes αρχίσουν να εκτελούνται και να επικοινωνούν μεταξύ τους, παράγονται πολλές πληροφορίες. Το μεγαλύτερο μέρος του αποστέλλεται σε αρχεία — τα λεγόμενα log αρχεία ή, απλά, logs.

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

Logging με τον syslog Daemon

Παραδοσιακά, η διαχείριση των μηνυμάτων συστήματος γίνεται από το τυπικό logging facility — syslog — ή οποιοδήποτε από τα παράγωγά του — syslog-ng ή rsyslog. Ο logging daemon συλλέγει μηνύματα από άλλα services και προγράμματα και τα αποθηκεύει σε log αρχεία, συνήθως στο /var/log. Ωστόσο, ορισμένα services φροντίζουν τα δικά τους log αρχεία (πάρτε — για παράδειγμα — τον web server Apache HTTPD). Ομοίως, ο πυρήνας του Linux χρησιμοποιεί ένα buffer δακτυλίου στη μνήμη για την αποθήκευση των log μηνυμάτων του.

Αρχεία Kαταγραφής στο /var/log

Επειδή τα logs είναι δεδομένα που ποικίλλουν με την πάροδο του χρόνου, βρίσκονται συνήθως στο /var/log.

Εάν εξερευνήσετε το /var/log, θα συνειδητοποιήσετε ότι τα ονόματα των logs είναι — σε κάποιο βαθμό — αρκετά αυτονόητα. Μερικά παραδείγματα περιλαμβάνουν:

/var/log/auth.log

Αποθηκεύει πληροφορίες σχετικά με την επαλήθευση ταυτότητας.

/var/log/kern.log

Αποθηκεύει πληροφορίες πυρήνα.

/var/log/syslog

Αποθηκεύει πληροφορίες συστήματος.

/var/log/messages

Αποθηκεύει δεδομένα συστήματος και εφαρμογών.

Note

Το ακριβές όνομα και τα περιεχόμενα των log αρχείων ενδέχεται να διαφέρουν μεταξύ των διανομών Linux.

Πρόσβαση στα Log Αρχεία

Κατά την εξερεύνηση log αρχείων, θυμηθείτε να είστε ο χρήστης root (εάν δεν έχετε δικαιώματα ανάγνωσης) και να χρησιμοποιείτε έναν σελιδοποιητή όπως το less.

# less /var/log/messages
Jun  4 18:22:48 debian liblogging-stdlog:  [origin software="rsyslogd" swVersion="8.24.0" x-pid="285" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Jun 29 16:57:10 debian kernel: [    0.000000] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27)
Jun 29 16:57:10 debian kernel: [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 root=/dev/sda1 ro quiet

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

# tail -f /var/log/messages
Jul  9 18:39:37 debian kernel: [    2.350572] RAPL PMU: hw unit of domain psys 2^-0 Joules
Jul  9 18:39:37 debian kernel: [    2.512802] input: VirtualBox USB Tablet as /devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1:1.0/0003:80EE:0021.0001/input/input7
Jul  9 18:39:37 debian kernel: [    2.513861] Adding 1046524k swap on /dev/sda5.  Priority:-1 extents:1 across:1046524k FS
Jul  9 18:39:37 debian kernel: [    2.519301] hid-generic 0003:80EE:0021.0001: input,hidraw0: USB HID v1.10 Mouse [VirtualBox USB Tablet] on usb-0000:00:06.0-1/input0
Jul  9 18:39:37 debian kernel: [    2.623947] snd_intel8x0 0000:00:05.0: white list rate for 1028:0177 is 48000
Jul  9 18:39:37 debian kernel: [    2.914805] IPv6: ADDRCONF(NETDEV_UP): enp0s3: link is not ready
Jul  9 18:39:39 debian kernel: [    4.937283] e1000: enp0s3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Jul  9 18:39:39 debian kernel: [    4.938493] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s3: link becomes ready
Jul  9 18:39:40 debian kernel: [    5.315603] random: crng init done
Jul  9 18:39:40 debian kernel: [    5.315608] random: 7 urandom warning(s) missed due to ratelimiting

Θα βρείτε την έξοδο στην ακόλουθη μορφή:

  • Χρονοσήμανση

  • Όνομα του host από τον οποίο προήλθε το μήνυμα

  • Όνομα προγράμματος/service που δημιούργησε το μήνυμα

  • Το PID του προγράμματος που δημιούργησε το μήνυμα

  • Περιγραφή της δράσης που έλαβε χώρα

Τα περισσότερα log αρχεία είναι γραμμένα σε απλό κείμενο· ωστόσο, μερικά μπορούν να περιέχουν δυαδικά δεδομένα, όπως συμβαίνει με το /var/log/wtmp — το οποίο αποθηκεύει δεδομένα σχετικά με επιτυχημένες συνδέσεις. Μπορείτε να χρησιμοποιήσετε την εντολή file για να προσδιορίσετε ποια είναι η περίπτωση:

$ file /var/log/wtmp
/var/log/wtmp: dBase III DBT, version number 0, next free block index 8

Αυτά τα αρχεία διαβάζονται συνήθως χρησιμοποιώντας ειδικές εντολές. Η last χρησιμοποιείται για την ερμηνεία των δεδομένων στο /var/log/wtmp:

$ last
carol    tty2         :0               Thu May 30 10:53   still logged in
reboot   system boot  4.9.0-9-amd64    Thu May 30 10:52   still running
carol    tty2         :0               Thu May 30 10:47 - crash  (00:05)
reboot   system boot  4.9.0-9-amd64    Thu May 30 09:11   still running
carol    tty2         :0               Tue May 28 08:28 - 14:11  (05:42)
reboot   system boot  4.9.0-9-amd64    Tue May 28 08:27 - 14:11  (05:43)
carol    tty2         :0               Mon May 27 19:40 - 19:52  (00:11)
reboot   system boot  4.9.0-9-amd64    Mon May 27 19:38 - 19:52  (00:13)
carol    tty2         :0               Mon May 27 19:35 - down   (00:03)
reboot   system boot  4.9.0-9-amd64    Mon May 27 19:34 - 19:38  (00:04)
Note

Παρόμοια με το /var/log/wtmp, το /var/log/btmp αποθηκεύει πληροφορίες σχετικά με αποτυχημένες προσπάθειες σύνδεσης και η ειδική εντολή για την ανάγνωση του περιεχομένου του είναι lastb.

Κυκλική Εναλλαγή Log

Τα log αρχεία μπορούν να αυξηθούν πολύ μέσα σε λίγες εβδομάδες ή μήνες και να καταλάβουν όλο τον ελεύθερο χώρο στο δίσκο. Για να αντιμετωπιστεί αυτό, χρησιμοποιείται το βοηθητικό πρόγραμμα logrotate. Εφαρμόζει εναλλαγή των log αρχείων ή ανακύκλωση που συνεπάγεται ενέργειες όπως η μετακίνηση log αρχείων σε νέο όνομα, η αρχειοθέτηση ή/και η συμπίεσή τους, την αποστολή τους μερικές φορές μέσω email στον διαχειριστή συστήματος και τελικά τη διαγραφή τους καθώς παλαιώνονται. Οι κανόνες που χρησιμοποιούνται για την ονομασία αυτών των κυκλικών log αρχείων (προσθέτοντας ένα suffix με την ημερομηνία, για παράδειγμα) ποικίλουν· ωστόσο, η απλή προσθήκη ενός suffix με έναν ακέραιο είναι συνηθισμένη:

# ls /var/log/apache2/
access.log  error.log  error.log.1  error.log.2.gz  other_vhosts_access.log

Σημειώστε πώς το error.log.2.gz έχει ήδη συμπιεστεί με gzip (εξ' ου και το suffix .gz).

Η Προσωρινή Μνήμη Δακτυλίου του Πυρήνα

H προσωρινή μνήμη δακτυλίου του πυρήνα είναι μια δομή δεδομένων σταθερού μεγέθους που καταγράφει μηνύματα εκκίνησης του πυρήνα καθώς και οποιαδήποτε ζωντανά μηνύματα του πυρήνα. Η λειτουργία αυτής της προσωρινής μνήμης — πολύ σημαντική — είναι το logging όλων των μηνυμάτων του πυρήνα που παράγονται κατά την εκκίνηση — όταν το syslog δεν είναι ακόμη διαθέσιμο. Η εντολή dmesg εκτυπώνει την προσωρινή μνήμη δακτυλίου του πυρήνα (το οποίο αποθηκευόταν επίσης στο /var/log/dmesg). Λόγω της έκτασης της προσωρινής μνήμης δακτυλίου, αυτή η εντολή χρησιμοποιείται συνήθως σε συνδυασμό με το βοηθητικό πρόγραμμα φιλτραρίσματος κειμένου grep ή έναν σελιδοποιητή όπως less. Για παράδειγμα, για να αναζητήσετε μηνύματα εκκίνησης:

$ dmesg | grep boot
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
[    0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
[    0.144986] AppArmor: AppArmor disabled by boot time parameter
(...)
Note

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

Το Ημερολόγιο Συστήματος: systemd-journald

Από το 2015, το systemd αντικατέστησε το SysV Init ως έναν εκ των πραγμάτων διαχειριστή συστήματος και υπηρεσιών στις περισσότερες μεγάλες διανομές Linux. Κατά συνέπεια, ο journal daemon — journald — έχει γίνει το τυπικό logging στοιχείο, αντικαθιστώντας το syslog στις περισσότερες πτυχές του. Τα δεδομένα δεν αποθηκεύονται πλέον σε απλό κείμενο αλλά σε δυαδική μορφή. Επομένως, το βοηθητικό πρόγραμμα journalctl είναι απαραίτητο για την ανάγνωση των log αρχείων. Επιπλέον, το journald είναι συμβατό με το syslog και μπορεί να ενσωματωθεί με το syslog.

Το journalctl είναι το βοηθητικό πρόγραμμα που χρησιμοποιείται για την ανάγνωση και την υποβολή ερωτημάτων στη βάση δεδομένων του ημερολογίου του systemd. Εάν καλείται χωρίς επιλογές, εκτυπώνει ολόκληρο το ημερολόγιο:

# journalctl
-- Logs begin at Tue 2019-06-04 17:49:40 CEST, end at Tue 2019-06-04 18:13:10 CEST. --
jun 04 17:49:40 debian systemd-journald[339]: Runtime journal (/run/log/journal/) is 8.0M, max 159.6M, 151.6M free.
jun 04 17:49:40 debian kernel: microcode: microcode updated early to revision 0xcc, date = 2019-04-01
Jun 04 17:49:40 debian kernel: Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) )
Jun 04 17:49:40 debian kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 root=/dev/sda1 ro quiet
(...)

Ωστόσο, όταν καλείται με τους διακόπτες -k ή --dmesg, θα ισοδυναμεί με τη χρήση της εντολής dmesg:

# journalctl -k
[    0.000000] Linux version 4.9.0-9-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u2 (2019-05-13)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
(...)

Άλλες ενδιαφέρουσες επιλογές για το journalctl περιλαμβάνουν:

-b, --boot

Εμφανίζει πληροφορίες εκκίνησης.

-u

Εμφανίζει μηνύματα σχετικά με μια καθορισμένη μονάδα. Χονδρικά, μια μονάδα μπορεί να οριστεί ως οποιοσδήποτε πόρος που χειρίζεται το systemd. Για παράδειγμα, το journalctl -u apache2.service χρησιμοποιείται για την ανάγνωση μηνυμάτων σχετικά με τον web server apache2.

-f

Εμφανίζει τα πιο πρόσφατα μηνύματα ημερολογίου και συνεχίζει να εκτυπώνει νέες εγγραφές καθώς προσαρτώνται στο ημερολόγιο — όπως το tail -f.

Καθοδηγούμενες Ασκήσεις

  1. Ρίξτε μια ματιά στην ακόλουθη λίστα απο το top και απαντήστε στις ακόλουθες ερωτήσεις:

    carol@debian:~$ top
    
    top - 13:39:16 up 31 min,  1 user,  load average: 0.12, 0.15, 0.10
    Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.1 us,  0.4 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1020332 total,   698700 free,   170664 used,   150968 buff/cache
    KiB Swap:  1046524 total,  1046524 free,        0 used.   710956 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
      605 nobody    20   0 1137620 132424  34256 S  6.3 13.0   1:47.24 ntopng
      444 www-data  20   0  364780   4132   2572 S  0.3  0.4   0:00.44 apache2
      734 root      20   0   95212   7004   6036 S  0.3  0.7   0:00.36 sshd
      887 carol     20   0   46608   3680   3104 R  0.3  0.4   0:00.03 top
        1 root      20   0   56988   6688   5240 S  0.0  0.7   0:00.42 systemd
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
        3 root      20   0       0      0      0 S  0.0  0.0   0:00.09 ksoftirqd/0
        4 root      20   0       0      0      0 S  0.0  0.0   0:00.87 kworker/0:0
    (...)
    • Ποιά processes έχουν ξεκινήσει από την χρήστη carol;

    • Ποιον εικονικό κατάλογο του /proc πρέπει να επισκεφτείτε για να αναζητήσετε δεδομένα σχετικά με την εντολή top;

    • Ποιό process εκτελέστηκε πρώτο; Πώς μπορείτε να το πείτε?

    • Συμπληρώστε τον πίνακα προσδιορίζοντας σε ποια περιοχή της εξόδου του top βρίσκονται οι ακόλουθες πληροφορίες:

      Πληροφορίες για …​ Περιοχή Σύνοψης Περιοχή Εργασιών

      Μνήμη

      Swap

      PID

      Χρόνος CPU

      Εντολές

  2. Ποια εντολή χρησιμοποιείται για την ανάγνωση των παρακάτω δυαδικών log αρχείων;

    • /var/log/wtmp

    • /var/log/btmp

    • /run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal

  3. Σε συνδυασμό με το grep, ποιες εντολές θα χρησιμοποιούσατε για να μάθετε τις ακόλουθες πληροφορίες σχετικά με το Linux σύστημά σας;

    • Πότε έγινε η τελευταία επανεκκίνηση του συστήματος (wtmp)

    • Ποιοι σκληροί δίσκοι είναι εγκατεστημένοι (kern.log)

    • Πότε έγινε η τελευταία σύνδεση (auth.log)

  4. Ποιές δύο εντολές θα χρησιμοποιούσατε για να εμφανιστεί η προσωρινή μνήμη δακτυλίου του πυρήνα;

  5. Υποδείξτε πού ανήκουν τα ακόλουθα log μηνύματα:

    • Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…​

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

  6. Χρησιμοποιήστε το journalctl για να λάβετε πληροφορίες σχετικά με τι παρακάτω μονάδες:

    Μονάδα Εντολή

    ssh

    networking

    rsyslog

    cron

Ασκήσεις Εξερεύνησης

  1. Επανεξετάστε την έξοδο του top από τις καθοδηγούμενες ασκήσεις και απαντήστε στις ακόλουθες ερωτήσεις:

    • Ποια δύο βήματα θα ακολουθούσατε για να σκοτώσετε τον web server apache;

    • Στην περιοχή σύνοψης, πώς θα μπορούσατε να εμφανίσετε τις πληροφορίες σχετικά με τη φυσική μνήμη και την swap χρησιμοποιώντας γραμμές προόδου;

    • Τώρα, ταξινομήστε τις διαδικασίες κατά χρήση μνήμης:

    • Τώρα που έχετε τις πληροφορίες μνήμης να εμφανίζονται με γραμμές προόδου και τα processes ταξινομημένα κατά χρήση μνήμης, αποθηκεύστε αυτές τις διαμορφώσεις ώστε να τις λαμβάνετε ως προεπιλογή την επόμενη φορά που θα χρησιμοποιήσετε το top:

    • Ποιο αρχείο αποθηκεύει τις ρυθμίσεις διαμόρφωσης του top; Που βρίσκεται? Πώς μπορείτε να ελέγξετε την ύπαρξή του;

  2. Μάθετε για την εντολή exec στο Bash. Προσπαθήστε να επιδείξετε τη λειτουργικότητά του ξεκινώντας ένα Bash session, βρείτε το process Bash με ps, και μετά εκτελέστε το exec /bin/sh και αναζητήστε ξανά το process με το ίδιο PID.

  3. Ακολουθήστε αυτά τα βήματα για να εξερευνήσετε συμβάντα του πυρήνα και τη δυναμική διαχείριση συσκευών του udev:

    • Συνδέστε μια μονάδα USB στον υπολογιστή σας. Εκτελέστε το dmesg και δώστε προσοχή στις τελευταίες γραμμές. Ποια είναι η πιο πρόσφατη γραμμή;

    • Έχοντας υπόψη την έξοδο από την προηγούμενη εντολή, εκτελέστε το ls /dev/sd* και βεβαιωθείτε ότι η μονάδα USB εμφανίζεται στην λίστα. Ποια είναι η έξοδος;

    • Τώρα αφαιρέστε τη μονάδα USB και εκτελέστε ξανά το dmesg. Πώς διαβάζεται η πιο πρόσφατη γραμμή;

    • Εκτελέστε ξανά το ls /dev/sd* και βεβαιωθείτε ότι η συσκευή σας εξαφανίστηκε από την λίστα. Ποια είναι η έξοδος;

Σύνοψη

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

Όσον αφορά τη διαχείριση των processes, μάθαμε τα εξής:

  • Τα προγράμματα δημιουργούν processes και τα processes υπάρχουν σε μια ιεραρχία.

  • Κάθε process έχει ένα μοναδικό αναγνωριστικό (PID) και ένα αναγνωριστικό parent process (PPID).

  • Το top είναι μια πολύ χρήσιμη εντολή για δυναμική και διαδραστική εξερεύνηση των εκτελούμενων processes του συστήματος.

  • Το ps μπορεί να χρησιμοποιηθεί για τη λήψη ενός snapshot των τρεχουσών processes που εκτελούνται στο σύστημα.

  • Ο κατάλογος /proc περιλαμβάνει καταλόγους για κάθε process που εκτελείται στο σύστημα με το όνομα των PID τους.

  • Την έννοια του μέσου όρου φόρτου του συστήματος — η οποία είναι πολύ χρήσιμη για τον έλεγχο της χρήσης/υπερφόρτωσης της CPU.

Όσον αφορά το logging του συστήματος, πρέπει να θυμόμαστε ότι:

  • Το log αρχείο είναι ένα αρχείο όπου καταγράφονται συμβάντα συστήματος. Τα log αρχεία είναι ανεκτίμητα όταν πρόκειται για την αντιμετώπιση προβλημάτων.

  • Το logging γίνεται παραδοσιακά από ειδικά services όπως το syslog, το syslog-ng ή το rsyslog. Ωστόσο, ορισμένα προγράμματα χρησιμοποιούν τους δικούς τους logging daemons.

  • Επειδή τα log αρχεία είναι μεταβλητά δεδομένα, διατηρούνται στο /var και — μερικές φορές — τα ονόματά τους μπορούν να σας δώσουν μια ιδέα για το περιεχόμενό τους (kern.log, auth.log, κ.λ.π.)

  • Τα περισσότερα log αρχεία είναι γραμμένα σε απλό κείμενο και μπορούν να διαβαστούν με οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου, αρκεί να έχετε τα σωστά δικαιώματα. Ωστόσο, μερικά από αυτά είναι δυαδικά και πρέπει να διαβαστούν χρησιμοποιώντας ειδικές εντολές.

  • Για να αποφύγετε προβλήματα με το χώρο στο δίσκο, η κυκλική εναλλαγή logs πραγματοποιείται από το βοηθητικό πρόγραμμα logrotate.

  • Όσον αφορά τον πυρήνα, χρησιμοποιεί μια κυκλική δομή δεδομένων — τον δακτύλιο προσωρινής μνήμης — όπου διατηρούνται τα μηνύματα εκκίνησης (τα παλιά μηνύματα εξαφανίζονται με την πάροδο του χρόνου).

  • Ο διαχειριστής συστήματος και υπηρεσιών systemd αντικατέστησε το System V init σε όλες σχεδόν τις διανομές με το journald να γίνεται το τυπικό logging service.

  • Για να διαβάσετε το ημερολόγιο του systemd, απαιτείται το βοηθητικό πρόγραμμα journalctl.

Εντολές που χρησιμοποιήθηκαν σε αυτό το μάθημα:

cat

Συνένωση/εκτύπωση των περιεχομένων ενός αρχείου.

dmesg

Εκτύπωση της προσωρινή μνήμη δακτυλίου του πυρήνα.

echo

Εμφάνιση μιας γραμμής κειμένου ή μια νέας γραμμής.

file

Προσδιορισμός του τύπου του αρχείου.

grep

Εκτύπωση γραμμών που ταιριάζουν με ένα μοτίβο.

last

Εμφάνιση μιας λίστας με τους τελευταίους συνδεδεμένους χρήστες

less

Εμφάνιση των περιεχομένων του αρχείου μία σελίδα τη φορά.

ls

Λίστα των περιεχομένων ενός καταλόγου.

journalctl

Ερώτημα προς το ημερολόγιο του systemd.

tail

Εμφάνιση των τελευταίων γραμμών ενός αρχείου.

Απαντήσεις στις Καθοδηγούμενες Ασκήσεις

  1. Ρίξτε μια ματιά στην ακόλουθη λίστα απο το top και απαντήστε στις ακόλουθες ερωτήσεις:

    carol@debian:~$ top
    
    top - 13:39:16 up 31 min,  1 user,  load average: 0.12, 0.15, 0.10
    Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.1 us,  0.4 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1020332 total,   698700 free,   170664 used,   150968 buff/cache
    KiB Swap:  1046524 total,  1046524 free,        0 used.   710956 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
      605 nobody    20   0 1137620 132424  34256 S  6.3 13.0   1:47.24 ntopng
      444 www-data  20   0  364780   4132   2572 S  0.3  0.4   0:00.44 apache2
      734 root      20   0   95212   7004   6036 S  0.3  0.7   0:00.36 sshd
      887 carol     20   0   46608   3680   3104 R  0.3  0.4   0:00.03 top
        1 root      20   0   56988   6688   5240 S  0.0  0.7   0:00.42 systemd
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
        3 root      20   0       0      0      0 S  0.0  0.0   0:00.09 ksoftirqd/0
        4 root      20   0       0      0      0 S  0.0  0.0   0:00.87 kworker/0:0
    (...)
    • Ποιά processes έχουν ξεκινήσει από την χρήστη carol;

      Απάντηση: Μόνο μία: top.

    • Ποιον εικονικό κατάλογο του /proc πρέπει να επισκεφτείτε για να αναζητήσετε δεδομένα σχετικά με την εντολή top;

      Απάντηση: /proc/887

    • Ποιό process εκτελέστηκε πρώτο; Πώς μπορείτε να το πείτε?

      Απάντηση: systemd. Επειδή είναι αυτό με το PID #1.

    • Συμπληρώστε τον πίνακα προσδιορίζοντας σε ποια περιοχή της εξόδου του top βρίσκονται οι ακόλουθες πληροφορίες:

      Πληροφορίες για …​ Περιοχή Σύνοψης Περιοχή Εργασιών

      Μνήμη

      Ναί

      Ναί

      Swap

      Ναί

      Όχι

      PID

      Όχι

      Ναί

      Χρόνος CPU

      Ναί

      Ναί

      Εντολές

      Όχι

      Ναί

  2. Ποια εντολή χρησιμοποιείται για την ανάγνωση των παρακάτω δυαδικών log αρχείων;

    • /var/log/wtmp

      Απάντηση: last

    • /var/log/btmp

      Απάντηση: lastb

    • /run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal

      Απάντηση: journalctl

  3. Σε συνδυασμό με το grep, ποιες εντολές θα χρησιμοποιούσατε για να μάθετε τις ακόλουθες πληροφορίες σχετικά με το Linux σύστημά σας;

    • Πότε έγινε η τελευταία επανεκκίνηση του συστήματος (wtmp)

      Απάντηση: last

    • Ποιοι σκληροί δίσκοι είναι εγκατεστημένοι (kern.log)

      Απάντηση: less /var/log/kern.log

    • Πότε έγινε η τελευταία σύνδεση (auth.log)

      Απάντηση: less /var/log/auth.log

  4. Ποιές δύο εντολές θα χρησιμοποιούσατε για να εμφανιστεί η προσωρινή μνήμη δακτυλίου του πυρήνα;

    dmesg και journalctl -k (επίσης journalctl --dmesg).

  5. Υποδείξτε πού ανήκουν τα ακόλουθα log μηνύματα:

    • Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      X

      /var/log/messages

    • Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver

      /var/log/auth.log

      /var/log/kern.log

      X

      /var/log/syslog

      /var/log/messages

      X

      Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)

      /var/log/auth.log

      X

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…​

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

      X

  6. Χρησιμοποιήστε το journalctl για να λάβετε πληροφορίες σχετικά με τι παρακάτω μονάδες:

    Μονάδα Εντολή

    ssh

    journalctl -u ssh.service

    networking

    journalctl -u networking.service

    rsyslog

    journalctl -u rsyslog.service

    cron

    journalctl -u cron.service

Απαντήσεις στις Ασκήσεις Εξερεύνησης

  1. Επανεξετάστε την έξοδο του top από τις καθοδηγούμενες ασκήσεις και απαντήστε στις ακόλουθες ερωτήσεις:

    • Ποια δύο βήματα θα ακολουθούσατε για να σκοτώσετε τον web server apache;

      Πρώτα, πατήστε k· στη συνέχεια δώστε μια τιμή kill.

    • Στην περιοχή σύνοψης, πώς θα μπορούσατε να εμφανίσετε τις πληροφορίες σχετικά με τη φυσική μνήμη και την swap χρησιμοποιώντας γραμμές προόδου;

      Πατώντας το m μία ή δύο φορές.

    • Τώρα, ταξινομήστε τις διαδικασίες κατά χρήση μνήμης:

      M

    • Τώρα που έχετε τις πληροφορίες μνήμης να εμφανίζονται με γραμμές προόδου και τα processes ταξινομημένα κατά χρήση μνήμης, αποθηκεύστε αυτές τις διαμορφώσεις ώστε να τις λαμβάνετε ως προεπιλογή την επόμενη φορά που θα χρησιμοποιήσετε το top:

      W

    • Ποιο αρχείο αποθηκεύει τις ρυθμίσεις διαμόρφωσης του top; Που βρίσκεται? Πώς μπορείτε να ελέγξετε την ύπαρξή του;

      Το αρχείο είναι ~/.config/procps/toprc και βρίσκεται στον αφετηριακό κατάλογο του χρήστη (~). Δεδομένου ότι είναι ένα κρυφό αρχείο (βρίσκεται σε έναν κατάλογο του οποίου το όνομα αρχίζει με μια τελεία), μπορούμε να ελέγξουμε την ύπαρξή του με το ls -a (λίστα όλων των αρχείων). Αυτό το αρχείο μπορεί να δημιουργηθεί πατώντας kbd:[Shift+W] ενώ βρίσκεστε στο top.

  2. Μάθετε για την εντολή exec στο Bash. Προσπαθήστε να επιδείξετε τη λειτουργικότητά του ξεκινώντας ένα Bash session, βρείτε το process Bash με ps, και μετά εκτελέστε το exec /bin/sh και αναζητήστε ξανά το process με το ίδιο PID.

    Το exec αντικαθιστά ένα process με μια άλλη εντολή. Στο παρακάτω παράδειγμα μπορούμε να δούμε ότι το Bash process αντικαθίσταται από το /bin/sh (αντί το /bin/sh να γίνει child process):

    $ echo $$
    19877
    $ ps auxf | grep 19877 | head -1
    carol  19877  0.0  0.0   7448  3984 pts/25   Ss   21:17   0:00  \_ bash
    $ exec /bin/sh
    sh-5.0$ ps auxf | grep 19877 | head -1
    carol  19877  0.0  0.0   7448  3896 pts/25   Ss   21:17   0:00  \_ /bin/sh
  3. Ακολουθήστε αυτά τα βήματα για να εξερευνήσετε συμβάντα του πυρήνα και τη δυναμική διαχείριση συσκευών του udev:

    • Συνδέστε μια μονάδα USB στον υπολογιστή σας. Εκτελέστε το dmesg και δώστε προσοχή στις τελευταίες γραμμές. Ποια είναι η πιο πρόσφατη γραμμή;

      Θα πρέπει να πάρετε κάτι σύμφωνα με το [ 1967.700468] sd 6:0:0:0: [sdb] Attached SCSI removable disk.

    • Έχοντας υπόψη την έξοδο από την προηγούμενη εντολή, εκτελέστε το ls /dev/sd* και βεβαιωθείτε ότι η μονάδα USB εμφανίζεται στην λίστα. Ποια είναι η έξοδος;

      Ανάλογα με τον αριθμό των συσκευών που είναι συνδεδεμένες στο σύστημά σας, θα πρέπει να λάβετε κάτι σαν /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdb2. Στην περίπτωση μας, βρίσκουμε την μονάδα USB μας (/dev/sdb) και τα δύο partitions του (/dev/sdb1 και /dev/sdb2).

    • Τώρα αφαιρέστε τη μονάδα USB και εκτελέστε ξανά το dmesg. Πώς διαβάζεται η πιο πρόσφατη γραμμή;

      Θα πρέπει να πάρετε κάτι σύμφωνα με το [ 2458.881695] usb 1-9: USB disconnect, device number 6.

    • Εκτελέστε ξανά το ls /dev/sd* και βεβαιωθείτε ότι η συσκευή σας εξαφανίστηκε από την λίστα. Ποια είναι η έξοδος;

      Στην περίπτωση μας, /dev/sda /dev/sda1.

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Επόμενο Μάθημα

4.4 Ο Υπολογιστής σας στο Δίκτυο (4.4 Μάθημα 1)

Διάβασε το επόμενο μάθημα

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Το LPI είναι ένας μη κερδοσκοπικός οργανισμός.

© 2023 Το Linux Professional Institute (LPI) είναι το παγκόσμιο πρότυπο πιστοποίησης και οργανισμός υποστήριξης σταδιοδρομίας για επαγγελματίες ανοιχτού κώδικα. Με περισσότερους από 200.000 κατόχους πιστοποίησης, είναι ο πρώτος και μεγαλύτερος στον κόσμο ουδέτερος οργανισμός πιστοποιήσεων Linux και ανοιχτού κώδικα. Το LPI έχει πιστοποιημένους επαγγελματίες σε περισσότερες από 180 χώρες, παραδίδει εξετάσεις σε πολλές γλώσσες και έχει εκατοντάδες συνεργάτες εκπαίδευσης.

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

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Επικοινωνήστε Μαζί Μας
  • Πολιτική Απορρήτου και Πολιτική Cookie

Εντοπίσατε ένα λάθος ή θέλετε να βοηθήσετε στη βελτίωση αυτής της σελίδας; Παρακαλούμε ενημερώστε μας.

© 1999–2023 The Linux Professional Institute Inc. All rights reserved.