Linux to rodzina systemów operacyjnych opartych na wspólnym jądrze (*kernel*), dostępnych jako dystrybucje, np. Ubuntu, Debian czy Fedora. Żeby zostać programistą, nie musisz go znać, ale przy pracy z serwerami jest praktycznie niezbędny. Na start poznaj układ katalogów (wszystko zaczyna się od/), różnicę między zwykłym użytkownikiem aroot, sposób instalowania programów przez menedżer pakietów oraz kilkanaście podstawowych komend, takich jakls,cd,cp,grepisudo.
Większość serwerów, na których działają aplikacje internetowe, pracuje pod kontrolą Linuxa. Dlatego wcześniej czy później wielu programistów, a szczególnie przyszły DevOps, trafia do jego terminala. Ten artykuł wyjaśnia, jak ten system jest zbudowany i po co są jego podstawowe elementy. Samą składnię poleceń, flagi i typowe błędy opisujemy w osobnym artykule o terminalu i wierszu poleceń.
Czy muszę znać Linuxa, żeby zostać programistą?
Nie. Programować możesz na Windowsie, macOS albo Linuxie i wiele zespołów pracuje bez żadnego kontaktu z terminalem Linuxa. Jeśli piszesz frontend albo aplikacje, które ktoś inny wdraża na serwer, podstawy wystarczą do sprawnego poruszania się w terminalu.
Wygląda to inaczej, gdy masz do czynienia z serwerami: wdrażasz aplikację, szukasz błędu w logach na maszynie, konfigurujesz usługi albo pracujesz jako DevOps. Wtedy znajomość Linuxa jest praktycznie niezbędna, bo to na nim najczęściej działają serwery.
Jednocześnie dziś jest to mniej istotne niż jeszcze kilka lat temu. Coraz więcej pracy bierze na siebie chmura, zarządzane usługi, kontenery i gotowe platformy do wdrożeń, więc wielu programistów rzadko loguje się na serwer ręcznie. Mimo to warto znać podstawy, bo przydają się, gdy coś pójdzie nie tak, a wiedza o tym, jak działa system, na którym stoi Twoja aplikacja, zostaje z Tobą niezależnie od narzędzi.
Czym jest Linux i czym jest dystrybucja?
Linux to w ścisłym sensie samo jądro (kernel), czyli część systemu, która zarządza sprzętem, pamięcią i procesami. Dopiero jądro razem z programami, narzędziami i menedżerem pakietów tworzy dystrybucję (distribution, w skrócie distro): gotowy system, który możesz zainstalować.
| Dystrybucja | Dla kogo | Menedżer pakietów |
|---|---|---|
| Ubuntu | Dobry początek, bardzo dużo poradników | apt |
| Debian | Stabilny system, często na serwerach | apt |
| Fedora | Nowsze wersje programów | dnf |
| Arch Linux | Dla osób, które lubią składać system samodzielnie | pacman |
Na początek wystarczy Ubuntu albo Debian. Większość poradników w internecie zakłada właśnie je. Które dystrybucje działają na serwerach, w kontenerach i w chmurze, zależy od firmy, ale polecenia z tego artykułu działają w większości z nich.
Jak wypróbować Linuxa, nie rezygnując z obecnego systemu?
Nie musisz zastępować Windowsa ani macOS. Najprostsze sposoby:
- WSL na Windowsie: Linux uruchamiany wewnątrz Windowsa, wygodny do nauki terminala (więcej w artykule o wyborze systemu operacyjnego dla programisty).
- Maszyna wirtualna: np. VirtualBox z obrazem Ubuntu.
- Kontener Dockera: szybki sposób na czysty system do testów, choć wymaga podstaw Dockera.
- Serwer w chmurze: tani serwer z Linuksem, na który łączysz się przez SSH, np. w chmurze AWS (zobacz, czym jest AWS i od czego zacząć).
Na macOS masz już podobny terminal, bo system jest oparty na Uniksie, ale nie wszystkie polecenia i ścieżki są identyczne jak w Linuksie.
Jak zbudowane są katalogi w Linuxie?
W Linuxie nie ma liter dysków jak C:. Wszystko leży w jednym drzewie, które zaczyna się od katalogu głównego /. Układ jest opisany standardem FHS (Filesystem Hierarchy Standard), więc w większości dystrybucji wygląda podobnie:
| Katalog | Co w nim znajdziesz |
|---|---|
/ | Korzeń drzewa, początek wszystkich ścieżek |
/home | Katalogi domowe użytkowników (np. /home/anna) |
/root | Katalog domowy użytkownika root |
/etc | Pliki konfiguracyjne systemu i usług |
/var | Dane, które się zmieniają: logi (/var/log), kolejki, cache |
/usr | Zainstalowane programy i biblioteki |
/bin, /sbin | Podstawowe programy systemowe |
/tmp | Pliki tymczasowe |
/dev | Pliki reprezentujące urządzenia |
Dwie rzeczy, o które początkujący najczęściej się potykają: w Linuxie wielkość liter w nazwach plików ma znaczenie (Notatki.txt i notatki.txt to dwa różne pliki), a ścieżki zapisuje się ukośnikiem /.
Kim jest root i do czego służy sudo?
Każdy użytkownik ma swoje konto i swój katalog domowy. Specjalny użytkownik root ma pełne uprawnienia do całego systemu i może wszystko, także usunąć system. Dlatego na co dzień pracujesz na zwykłym koncie, a administracyjne polecenia poprzedzasz słowem sudo, które wykonuje jedno polecenie z uprawnieniami administratora.
# instalacja programu wymaga uprawnień administratora
sudo apt install htop
Zasada, której warto się trzymać: nie uruchamiaj sudo bez zrozumienia, co robi polecenie, szczególnie takie wklejone z internetu. O tym, co oznacza „permission denied”, i o samych uprawnieniach plików przeczytasz w artykule o chmod w Linuksie.
Jak instalować programy w Linuxie?
Programy instaluje się zwykle przez menedżer pakietów (package manager), który pobiera je z oficjalnych repozytoriów, dba o zależności i pozwala je aktualizować jednym poleceniem. Nazwa zależy od dystrybucji.
# Debian / Ubuntu
sudo apt update # pobiera listę dostępnych pakietów
sudo apt install git # instaluje pakiet
sudo apt remove git # usuwa pakiet
# Fedora
sudo dnf install git
Zamiast szukać plików .exe na stronach internetowych, szukasz nazwy pakietu. To jeden z powodów, dla których instalacja i aktualizacja oprogramowania na Linuxie bywa szybsza niż na innych systemach.
Jak sprawdzić, co działa w systemie? Procesy, usługi i logi
Każdy uruchomiony program to proces. Serwer zwykle ma też usługi (services, czasem nazywane daemons), czyli programy działające w tle, np. serwer WWW czy baza danych. W większości nowoczesnych dystrybucji zarządza nimi systemd.
ps aux # lista procesów
top # procesy na żywo (wyjście: q)
systemctl status nginx # stan usługi nginx
journalctl -u nginx # logi usługi nginx
Gdy coś nie działa, pierwszym krokiem jest zwykle sprawdzenie logów. Znajdziesz je w /var/log albo przez journalctl.
Jakie są najważniejsze komendy Linuxa na start?
Poniższa tabela to zestaw na pierwsze dni. Jak czytać flagi i argumenty tych poleceń, wyjaśnia artykuł o terminalu.
| Komenda | Do czego służy | Przykład |
|---|---|---|
pwd | Pokazuje, w którym katalogu jesteś | pwd |
ls | Wypisuje zawartość katalogu | ls -la |
cd | Zmienia katalog | cd /var/log |
mkdir | Tworzy katalog | mkdir projekty |
touch | Tworzy pusty plik | touch notatki.txt |
cp | Kopiuje plik lub katalog | cp a.txt b.txt |
mv | Przenosi lub zmienia nazwę | mv a.txt archiwum/ |
rm | Usuwa plik (bez kosza!) | rm stary.txt |
cat | Wypisuje zawartość pliku | cat plik.txt |
less | Przewija długi plik | less /var/log/syslog |
grep | Szuka tekstu w plikach | grep "error" app.log |
find | Szuka plików po nazwie | find . -name "*.log" |
chmod | Zmienia uprawnienia | chmod +x skrypt.sh |
sudo | Uruchamia jako administrator | sudo apt update |
man | Pokazuje instrukcję polecenia | man ls |
Uwaga na rm: usuwa na stałe, bez kosza. Szczególnie ostrożnie używaj go z flagą -r, która usuwa katalogi razem z zawartością.
Jak łączyć polecenia w potoki?
Siła terminala bierze się z łączenia małych poleceń. Znak | (potok) przekazuje wynik jednego polecenia do następnego.
# ile linii z błędem jest w logu?
grep "error" app.log | wc -l
# zapisz listę plików do pliku
ls -la > lista.txt
Znak > zapisuje wynik do pliku (nadpisując go), a >> dopisuje na końcu.
Od czego zacząć naukę Linuxa po tym artykule?
- Zainstaluj Ubuntu w WSL, maszynie wirtualnej lub na tanim serwerze.
- Przejdź po drzewie katalogów z
cdils, zajrzyj do/etci/var/log. - Zainstaluj jeden program przez
apti go usuń. - Napisz prosty skrypt w Bashu, który zapisuje datę do pliku, i nadaj mu prawo uruchamiania.
- Połącz się z serwerem przez SSH.
Jeśli Linux ma być pierwszym krokiem do pracy jako DevOps, zobacz też, jakie jeszcze umiejętności są potrzebne na start w artykule Kim jest DevOps? Jakie umiejętności są niezbędne, aby zostać juniorem?.


