Από Coder σε Engineer
Linux & το Terminal
Εισαγωγή στο DevOps
Στοιχειώδες Networking
HTTP επικοινωνία
Git vs Github
Εισαγωγή στο Cloud
Ρόλοι στο Tech
Πώς να τα καταφέρεις στο Interview
Take-Home Assignments
Linux cheatsheet: οι βασικές εντολές
Άνοιξε δέκα αγγελίες για junior developer και μέτρα πόσες γράφουν «γνώσεις Linux», «εμπειρία με Linux» ή «άνεση στο command line». Θα το βρεις σε πολλές από αυτές, ακόμα και σε θέσεις Backend, γιατί σχεδόν κάθε server στο production τρέχει Linux. Αυτό το Linux cheatsheet μαζεύει σε μία σελίδα τις βασικές εντολές Linux του κεφαλαίου, τα λάθη που κάνουν οι junior τις πρώτες εβδομάδες και τις ερωτήσεις που θα ακούσεις σε interview.
Διάβασέ το το βράδυ πριν από μια συνέντευξη. Κράτα το ανοιχτό σε ένα tab τις πρώτες μέρες στη δουλειά, όταν κάνεις SSH σε έναν server και βλέπεις μόνο ένα prompt που αναβοσβήνει. Κάθε ενότητα σε στέλνει στο μάθημα με την πλήρη εξήγηση.
Ο χάρτης του κεφαλαίου
Ο interviewer δε θέλει να ακούσει μια λίστα με εντολές. Θέλει να δει ότι ξέρεις τη σειρά: πρώτα κινείσαι στο filesystem και βρίσκεις αρχεία, μετά ελέγχεις permissions, processes και logs. Στο τέλος στήνεις ένα service όπως ο nginx, με το
sudo και το apt. Με την ίδια σειρά θα δουλέψεις και την πρώτη σου μέρα σε έναν άγνωστο server, οπότε ο χάρτης είναι και το πλάνο σου για τότε.Πρώτα μαθαίνεις να κινείσαι, μετά να ελέγχεις, στο τέλος να στήνεις ένα service.
Πού θα το συναντήσεις στη δουλειά
Τον πρώτο μήνα σε μια junior θέση, κανείς δε θα σου ζητήσει κάτι από την εξεταστική. Θα σου πουν «ο server είναι αργός» ή «το deploy script δεν τρέχει, γράφει
Permission denied» και θα κοιτάξουν αν ξέρεις από πού να ξεκινήσεις. Ο πίνακας έχει τις πιο συχνές τέτοιες στιγμές, την πρώτη εντολή που τρέχεις και το μάθημα που την εξηγεί.| Στη δουλειά | Τι τρέχεις | Μάθημα |
|---|---|---|
| SSH σε server, δεν ξέρεις πού είσαι | pwd, ls -la, cd | Filesystem & Paths |
Script με Permission denied | ls -l, μετά chmod +x | Permissions & Root |
| Server στο 100% CPU | top, kill <PID> | Processes |
| Τι έγινε στις 14:32 | grep "14:32" app.log | Pipes, Redirection & Αναζήτηση |
| Errors live, τη στιγμή που γράφονται | tail -f app.log | grep error | Pipes, Redirection & Αναζήτηση |
| Typo στο nginx config | sudo sed -i 's/proxy_pas/proxy_pass/' | sed: Επεξεργασία με script |
| Λείπει ένα εργαλείο | sudo apt update, sudo apt install | apt & Package Management |
| Άλλαξες config, δεν έγινε τίποτα | systemctl restart nginx | Services & nginx |
Πρόσεξε ότι οι περισσότερες γραμμές ξεκινούν με μια εντολή που μόνο διαβάζει, όπως το
ls -l, το top ή το grep. Αυτό θέλει να δει ένας senior, όταν ψάχνετε μαζί ένα πρόβλημα στον server: πρώτα καταλαβαίνεις τι συμβαίνει, μετά αλλάζεις κάτι. Αν ψάχνεις τι σημαίνει στην πράξη Linux για junior developer, είναι κυρίως αυτή η συνήθεια.Πού βρίσκεσαι: filesystem και paths
Στο Linux δεν υπάρχουν δίσκοι C: και D:, όλα κρέμονται από ένα δέντρο με ρίζα το
/. Τα configs είναι στο /etc, τα αρχεία των χρηστών στο /home, τα logs κάτω από το /var. Την πρώτη μέρα στη δουλειά θα ακούσεις «ρίξε μια ματιά στο config του nginx» και θα περιμένουν να φτάσεις εκεί με cd χωρίς να ρωτήσεις πού είναι. Τις εντολές πλοήγησης τις έχει αναλυτικά το δωρεάν μάθημα.Ξεκινά με
/; Είναι absolute. Αλλιώς εξαρτάται από το pwd σου.Permissions: ποιος κάνει τι
Το
Permission denied είναι από τα πρώτα errors που θα δεις στη δουλειά. Κάθε αρχείο έχει τρεις ομάδες δικαιωμάτων, για τον owner, το group και τους υπόλοιπους. Η καθεμία λέει αν μπορεί να διαβάσει, να γράψει ή να εκτελέσει. Στο interview το chmod 755 είναι από τις πιο συνηθισμένες ερωτήσεις, ενώ στη δουλειά ο junior που βάζει sudo μπροστά από όλα φαίνεται από την πρώτη εβδομάδα.Τρία γράμματα ανά ομάδα, r=4, w=2, x=1, και προσθέτεις.
Pipes και redirection
Σε έναν production server δεν έχεις γραφικό περιβάλλον, έχεις logs με χιλιάδες γραμμές. Με το
| το output μιας εντολής γίνεται input της επόμενης, οπότε τα grep και wc -l μαζί απαντούν στο «πόσα errors είχαμε σήμερα;» σε μία γραμμή. Το tail -f σού δείχνει τα errors τη στιγμή που γράφονται. Αυτό εννοεί μια αγγελία, όταν γράφει «troubleshooting σε Linux».Μικρά εργαλεία στη σειρά απαντούν πραγματικές ερωτήσεις. Το
> σβήνει, το >> προσθέτει.Services: config, restart, έλεγχος
Ένα service είναι ένα πρόγραμμα που τρέχει συνέχεια στο background, όπως ο nginx που σερβίρει ένα site. Το εγκαθιστάς με
apt, αλλάζεις το config στο /etc, κάνεις restart και ελέγχεις με status ότι τρέχει. Ένα από τα πρώτα tickets που θα σου δώσουν μπορεί να είναι ακριβώς αυτό: μια αλλαγή σε config που δεν έπιασε, επειδή κανείς δεν έκανε restart. Σε production το κάνεις με systemctl, στο lab με service.Ο nginx διαβάζει το config μόνο όταν ξεκινά, γι' αυτό κάθε αλλαγή θέλει restart.
Εντολές και όροι
Αυτές είναι οι βασικές εντολές Linux που θα περιμένουν να ξέρεις σε μια junior θέση, με μία γραμμή εξήγηση η καθεμία. Άνοιξε τον πίνακα πριν από ένα technical interview και δες αν μπορείς να εξηγήσεις κάθε γραμμή με δικά σου λόγια. Στη δουλειά θα σου χρειαστεί όταν θυμάσαι ότι υπάρχει μια εντολή, αλλά όχι το flag της.
| Εντολή ή όρος | Τι σημαίνει | Μάθημα |
|---|---|---|
pwd, ls -la, cd | Πού είμαι, τι υπάρχει, πήγαινε αλλού | Filesystem & Paths |
rm -r, rm -i | Σβήσιμο χωρίς undo, με επιβεβαίωση | Διαχείριση Αρχείων |
chmod +x, sudo | Κάνε εκτελέσιμο, μία εντολή ως root | Permissions & Root |
top, kill / kill -9 | Ποιος τρώει πόρους, κλείσ' τον ευγενικά / βίαια | Processes |
|, grep | Output στην επόμενη εντολή, ψάξε κείμενο | Pipes, Redirection & Αναζήτηση |
> / >> | Αντικατάσταση / προσθήκη στο τέλος | Pipes, Redirection & Αναζήτηση |
sed -i 's/παλιό/νέο/g' | Αντικατάσταση απευθείας στο αρχείο | sed: Επεξεργασία με script |
systemctl / service | Services σε production / στο lab | Services & nginx |
Αν μια γραμμή δεν μπορείς να την εξηγήσεις, άνοιξε το μάθημα της τελευταίας στήλης. Για τα υπόλοιπα flags, κανείς στη δουλειά δε θα σε κρίνει επειδή άνοιξες το
man, αρκεί να ξέρεις ότι υπάρχει.Συνηθισμένα λάθη
Τα περισσότερα λάθη στο terminal δεν έχουν undo και δε σε ρωτάνε «είσαι σίγουρος;». Ένα
rm με λάθος wildcard στον server της εταιρείας δεν κοστίζει έναν βαθμό στην εξεταστική, κοστίζει ώρες δουλειάς και μια δύσκολη κουβέντα με τον team lead σου. Διάβασε τον πίνακα πριν τρέξεις κάτι επικίνδυνο, όχι αφού το τρέξεις.| Λάθος | Αντί γι' αυτό | Μάθημα |
|---|---|---|
cat σε τεράστιο log | less ή grep | Διαχείριση Αρχείων |
rm *.log στα τυφλά | Πρώτα ls *.log | Διαχείριση Αρχείων |
sudo από συνήθεια | Διάβασε το error, ls -l | Permissions & Root |
kill -9 πρώτα | Πρώτα σκέτο kill | Processes |
> αντί για >> | >> για προσθήκη | Pipes, Redirection & Αναζήτηση |
sed -i χωρίς δοκιμή | Πρώτα χωρίς -i | sed: Επεξεργασία με script |
| Config χωρίς restart | restart το service | Services & nginx |
Κόλλησες στο man ή στο less | Πάτα q | Terminal & Shell |
Η ερώτηση «ποιο λάθος έχεις κάνει και τι έμαθες από αυτό;» ακούγεται συχνά σε interviews. Μια ειλικρινής απάντηση από αυτόν τον πίνακα, μαζί με τον κανόνα «πρώτα κοιτάς, μετά αλλάζεις», λέει πολύ περισσότερα για σένα από ένα «δεν έχω κάνει ποτέ λάθος».
Στο interview
Σε interview για junior θέση σε Backend ή DevOps, οι ερωτήσεις Linux σπάνια είναι δύσκολες. Ελέγχουν αν έχεις δουλέψει πραγματικά σε terminal και θέλουν σύντομη, σίγουρη απάντηση, όχι «νομίζω ότι είναι κάτι με...». Εδώ έχεις τις πιο πιθανές ερωτήσεις Linux σε interview με την απάντηση σε μία γραμμή, για να την πεις πρώτα και να την εξηγήσεις μετά, αν σε ρωτήσουν.
| Ερώτηση | Σύντομη απάντηση | Μάθημα |
|---|---|---|
| Terminal ή shell; | Παράθυρο / πρόγραμμα που εκτελεί | Terminal & Shell |
| Absolute ή relative path; | Από / / από εκεί που είσαι | Filesystem & Paths |
Permission denied; | ls -l, chmod +x, όχι αυτόματο sudo | Permissions & Root |
chmod 755; | r=4, w=2, x=1: 7, 5, 5 | Permissions & Root |
kill ή kill -9; | SIGTERM καθαρά / SIGKILL αμέσως | Processes |
| Server στο 100% μνήμη; | top, PID, kill | Processes |
| Πόσα errors έχει ένα log; | grep error app.log | wc -l | Pipes, Redirection & Αναζήτηση |
| Άλλαξες config, τίποτα; | Restart: διαβάζεται μόνο στην εκκίνηση | Services & nginx |
Η σύντομη απάντηση ανοίγει την κουβέντα. Αυτό που σε ξεχωρίζει είναι ένα παράδειγμα από κάτι που έκανες ο ίδιος, έστω στο lab: το «διόρθωσα ένα nginx config που δε φόρτωνε» μετράει περισσότερο από κάθε ορισμό.
Σύνοψη
Ξέρεις πλέον να βρεις πού είσαι σε έναν server, να διαβάσεις και να αλλάξεις permissions, να εντοπίσεις ένα process που τρώει τη CPU και να ψάξεις στα logs με
grep. Ξέρεις ακόμα να αλλάξεις το config ενός service, να κάνεις restart και να ελέγξεις ότι τρέχει. Στο interview πες τα με ένα παράδειγμα από τα labs, όχι με ορισμούς, γιατί το παράδειγμα είναι αυτό που θυμάται ο interviewer. Αυτό σου δίνει το δικαίωμα να γράψεις στο CV «Linux command line: filesystem, permissions, processes, logs, nginx» και να το υποστηρίξεις με σιγουριά, αν σε ρωτήσουν.Θες να συνεχίσεις;
Αυτό το μάθημα είναι δωρεάν. Κάνε σύνδεση για να κρατάς την πρόοδο και τις σημειώσεις σου, ή απόκτησε το course για να ξεκλειδώσεις τα υπόλοιπα μαθήματα, τα labs και την κοινότητα.