Linux Administrator: Μάθε systemd και journalctl

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

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


🔧 Τι είναι το systemd;

Το systemd είναι ο “διαχειριστής” του Linux συστήματός σου. Είναι αυτό που:

  • Εκκινεί το σύστημα όταν ανοίγεις τον υπολογιστή
  • Διαχειρίζεται τις υπηρεσίες (services)
  • Φροντίζει να κάνουν επανεκκίνηση αν κρασάρουν
  • Καθορίζει τι τρέχει και πότε

Με απλά λόγια:
👉 Είναι ο μηχανισμός που κρατάει το σύστημά σου ζωντανό και οργανωμένο.


🧠 Γιατί είναι σημαντικό;

Αν δουλεύεις σε server ή θέλεις να γίνεις διαχειριστής συστημάτων, θα κάνεις συνέχεια τα εξής:

  • Να ξεκινάς ή να σταματάς υπηρεσίες (π.χ. nginx, ssh)
  • Να βλέπεις γιατί κάτι δεν δουλεύει
  • Να ορίζεις τι ξεκινάει αυτόματα στο boot
  • Να δημιουργείς δικές σου υπηρεσίες

Χωρίς systemd, όλα αυτά γίνονται πολύ πιο δύσκολα.


⚙️ Βασική έννοια: Units

Το systemd δουλεύει με κάτι που λέγονται units.

Το πιο βασικό είδος είναι:

  • .service → υπηρεσίες

Παραδείγματα:

  • nginx.service
  • ssh.service

🧪 Βασικές εντολές που ΠΡΕΠΕΙ να ξέρεις

Έλεγχος κατάστασης υπηρεσίας

systemctl status nginx

Εκκίνηση / Σταμάτημα / Επανεκκίνηση

systemctl start nginx
systemctl stop nginx
systemctl restart nginx

Εκκίνηση στο boot

systemctl enable nginx

Απενεργοποίηση:

systemctl disable nginx

👉 Το enable σημαίνει ότι η υπηρεσία θα ξεκινάει αυτόματα όταν ανοίγει το σύστημα.


🔍 Logs (εκεί γίνεται η πραγματική δουλειά)

Για να δεις τι συμβαίνει σε μια υπηρεσία:

journalctl -u nginx

Για live logs:

journalctl -u nginx -f

👉 Αυτό είναι το βασικό εργαλείο debugging σε έναν server.


🧱 Δημιουργία δικής σου υπηρεσίας (πρακτικό παράδειγμα)

Παρακάτω θα πρέπει να αντικαταστήσεις το path με το δικό σου. Ας πούμε ότι έχεις ένα script:

/home/manux/myapp.sh

1. Δημιουργία service αρχείου

sudo nano /etc/systemd/system/myapp.service

2. Περιεχόμενο

[Unit]
Description=My Custom App

[Service]
ExecStart=/home/manux/myapp.sh
Restart=always
User=manos

[Install]
WantedBy=multi-user.target

3. Ενημέρωση systemd

systemctl daemon-reexec
systemctl daemon-reload

4. Εκκίνηση

systemctl start myapp

5. Αυτόματη εκκίνηση

systemctl enable myapp

⚠️ Συχνά λάθη αρχαρίων

Με: Restart=always

η υπηρεσία ξεκινάει ξανά αυτόματα.

❌ “Τα logs είναι μόνο σε αρχεία”

Το systemd χρησιμοποιεί το journalctl, όχι μόνο απλά log files.


🧠 Πώς σκέφτεται ένας Linux Admin

Όταν κάτι δεν δουλεύει:

  1. systemctl status <service>
  2. journalctl -u <service>
  3. Διορθώνεις το πρόβλημα με βάση το log
  4. systemctl restart <service>

🚀 Τι να κάνεις τώρα (practice)

Για να μάθεις πραγματικά:

  • Εγκατάστησε nginx και δοκίμασε τις εντολές
  • Κάνε λάθος config και προσπάθησε να το διορθώσεις
  • Φτιάξε ένα δικό σου service
  • Δες live logs με journalctl -f

Συμπέρασμα

Το systemd δεν είναι απλά ένα εργαλείο, αλλά βασικό κομμάτι της καθημερινότητας ενός Linux Administrator.

Αν το μάθεις σωστά:
✔ Θα μπορείς να διαχειρίζεσαι servers
✔ Θα βρίσκεις προβλήματα πιο γρήγορα
✔ Θα αυτοματοποιείς διαδικασίες

Και αυτό είναι το πρώτο μεγάλο βήμα για να μπεις στον κόσμο του Linux administration.