Podstawowe komendy Linuxa, które musisz znać – lista z przykładami to zestaw tekstowych instrukcji wpisywanych bezpośrednio w terminalu, które dają ci pełną władzę nad plikami, procesami i konfiguracją systemu operacyjnego bez dotykania myszki. Najważniejsze z nich to po prostu ls do wyświetlania zawartości katalogu oraz cd do zmiany obecnego folderu roboczego.
Prawda jest zresztą absolutnie taka, że większość ludzi boi się czarnego ekranu terminala. A nie ma czego. Pracujemy na powłokach Bash lub Zsh od lat i to najszybsza metoda pracy. Wystarczy opanować kilkanaście krótkich poleceń. Wtedy praca z serwerem przestaje być zgadywanką. My na wdrożeniach używamy ich mechanicznie. Ty też zaczniesz. Zobaczysz poniżej konkretne i brutalne przykłady z naszej codziennej pracy na systemach Ubuntu i Debian.
Jakie są absolutnie podstawowe komendy Linuxa dla początkujących?
Zaczynamy od orientacji w terenie. Kiedy logujesz się na serwer przez SSH, system wyrzuca cię w jakimś domyślnym miejscu. Zazwyczaj jest to twój katalog domowy. Musisz wiedzieć, gdzie jesteś i co leży obok ciebie. Inaczej skasujesz nie to, co trzeba.
Polecenie pwd (Print Working Directory) wypluwa na ekran pełną ścieżkę do miejsca, w którym obecnie siedzisz. Wpisujesz. Wciskasz Enter. Masz wynik. Krótkie. Proste. Z kolei ls pokazuje ci pliki w tym katalogu. Ale samo ls to za mało. Zawsze dodawaj flagi.
- ls -la pokazuje wszystkie pliki, nawet te ukryte z kropką na początku, i podaje ich dokładne rozmiary oraz prawa dostępu w formie czytelnej listy. To jest absolutny wymóg na produkcji. Bez tego jesteś ślepy.
- cd /var/www przerzuca cię natychmiast do katalogu z plikami serwera WWW.
- cd .. cofa cię o jeden poziom wyżej w strukturze drzewa
- cd ~ wraca do twojego katalogu domowego z dowolnego miejsca na dysku. Prosty skrót. Zawsze działa
Pamiętam doskonale, jak w 2014 roku konfigurowaliśmy mały serwer pocztowy w ciasnej serwerowni na starym Mokotowie. Ktoś z zespołu zapomniał użyć pwd przed wykonaniem skryptu czyszczącego. Efekt? Wyparowało nam kilkaset megabajtów archiwum z /var/log. Od tamtej pory sprawdzanie obecnej ścieżki to u nas religia.
Jak zarządzać plikami i katalogami z poziomu terminala?
Kopiowanie i przenoszenie plików w wierszu poleceń działa szybciej niż w jakimkolwiek okienkowym menedżerze. Używasz cp do kopiowania i mv do przenoszenia lub zmiany nazwy. Ten drugi program to właściwie jedno i to samo narzędzie, bo dla systemu operacyjnego zmiana lokalizacji i zmiana nazwy to dokładnie ta sama operacja na poziomie węzłów i-node.
Jeżeli chcesz stworzyć nowy folder, wpisujesz mkdir nowy_folder. Z kolei do usuwania służy rm. I tutaj zaczynają się prawdziwe schody. Komenda rm nie wybacza. Nie ma żadnego kosza na śmieci. Jak wciśniesz Enter, plik znika na zawsze z dysku.
Nawiasem mówiąc, za każdym razem gdy czytam te sterylne akademickie poradniki o powłokach, to chce mi się śmiać na widok idealnych scenariuszy i czystych logów. Prawda u nas w biurze na wdrożeniach jest taka, że o 3 nad ranem nikt nie pamięta w locie skomplikowanych flag do polecenia tar na pamięć. Klepiesz na oślep to co znajdziesz na forach. I to jest ten wielki sekret inżynierów. Zwykły, pieprzony chaos i łatanie taśmą klejącą na szybko przed oddaniem projektu klientowi o 8 rano.
Zobacz jak to wygląda w praktyce:
- cp plik.txt kopia.txt robi dokładny duplikat pliku w tym samym katalogu. Jeżeli chcesz skopiować cały folder z zawartością, musisz dodać flagę rekursywną, czyli piszesz cp -r stary_katalog nowy_katalog. System musi wiedzieć, że ma wejść do środka i skopiować każdy bajt po kolei.
- rm -rf niechciany_katalog usuwa folder i wszystko co jest w środku bez żadnych pytań. Tego używaj tylko wtedy, gdy masz absolutną pewność.
W jaki sposób czytać zawartość plików bez ich otwierania w edytorze?
Otwieranie gigantycznego logu systemowego w edytorze Nano lub Vim to samobójstwo. Zarżniesz pamięć operacyjną maszyny. Do podglądu tekstu służą inne programy. Najprostszy z nich to cat. Wypisuje on całą zawartość pliku ciągiem na ekran terminala. Przydaje się tylko do bardzo krótkich notatek lub plików konfiguracyjnych.
Gdy plik ma kilka tysięcy linii, używamy less. Pozwala on na przewijanie tekstu strzałkami góra-dół. Żeby z niego wyjść, po prostu wciskasz klawisz Q.
Ale to narzędzie tail ratuje nam najczęściej życie na produkcji. Domyślnie wyświetla 10 ostatnich linii pliku. Jeżeli dodasz flagę -f, program przypnie się do pliku i będzie na żywo wypluwał nowe linie tekstowe, które dopisuje serwer. Więc wpisujesz tail -f /var/log/syslog. I patrzysz jak płyną błędy.
Kto ma do tego prawo, czyli jak działa chmod i chown w systemach uniksowych?
Błąd z uprawnieniami to bez mała prawie dziewięćdziesiąt procent przyczyn, dla których strony internetowe nagle przestają działać po migracji na nowy hosting. Linux traktuje każdego użytkownika bardzo restrykcyjnie. Polecenie chmod zmienia uprawnienia do pliku. Polecenie chown zmienia jego właściciela.
Możesz używać liter (r – read, w – write, x – execute) albo cyfr. My zawsze używamy cyfr, bo jest po prostu szybciej. Każda cyfra to suma wartości. Właściciel, grupa i cała reszta świata.
| Wartość | Znaczenie uprawnienia |
| 4 | Odczyt (Read). Pozwala tylko zobaczyć zawartość. |
| 2 | Zapis (Write). Pozwala edytować i kasować zawartość. |
| 1 | Wykonywanie (Execute). Pozwala uruchomić plik jako skrypt lub program. |
| 7 | Pełna władza. Suma 4 + 2 + 1. Odczyt, zapis i uruchamianie. |
Wpisujesz chmod 755 skrypt.sh. To oznacza, że ty jako właściciel masz pełne prawo (7), a reszta zespołu i obcy ludzie mogą go tylko przeczytać i uruchomić (5, czyli 4+1). Z kolei chmod 644 config.php to standard dla plików konfiguracyjnych na stronach. Ty czytasz i piszesz, reszta tylko czyta. Żadnego uruchamiania.
Co zrobić gdy proces zawiesi maszynę?
Czasami źle napisany skrypt PHP wejdzie w nieskończoną pętlę. Nagle cały system WYJE z braku pamięci RAM. Wiatraki na procesorze wchodzą na maksymalne obroty. Musisz zabić ten proces, zanim maszyna całkowicie przestanie odpowiadać na pingi. Służy do tego polecenie kill.
Najpierw musisz znaleźć numer PID (Process ID) tego zbuntowanego programu. Odpalasz top albo nieco nowocześniejsze htop. Widzisz tam tabelę, która odświeża się co sekundę. Patrzysz na pierwszą kolumnę z brzegu. Tam jest PID.
Masz ten numer. Więc wpisujesz kill 1234. System grzecznie prosi proces o zamknięcie. Czasami program ignoruje tę prośbę. Wtedy wyciągasz ciężką artylerię i wpisujesz kill -9 1234. Sygnał SIGKILL zrzuca proces z pamięci natychmiast. Brutalnie. Bez zapisywania stanu pracy.
Zastanawiacie się zresztą, dlaczego to na produkcji tak wyje na testach obciążeniowych po drodze? Sam się z tym borykałem dzisiaj rano na jednym klastrze. Deweloperzy wrzucili kod, który alokował obiekty w pamięci i ich nie zwalniał. Htop pokazywał czerwony pasek RAMu na 100%. Dwa strzały z kill -9 i serwer zaczął znowu oddychać.
Jak szukać wyrazów w setkach logów serwera?
Przeszukiwanie plików ręcznie to absurd. Od tego masz grep. To polecenie filtruje tekst i wyrzuca na ekran tylko te linie, które zawierają szukane przez ciebie słowo. Przeważnie łączymy go z innymi komendami za pomocą potoku, czyli pionowej kreski |.
Przykładowo, wpisujesz cat plik.txt | grep „error”. System bierze zawartość pliku i przepuszcza ją przez filtr. Widzisz na ekranie tylko błędy. My na serwerach często szukamy włamań w ten sposób. Wpisujesz grep „Failed password” /var/log/auth.log i od razu wiesz, z jakich adresów IP boty próbują odgadnąć twoje hasło roota.
Do szukania samych plików na dysku używamy z kolei komendy find. Jest toporna i ma tragiczną składnię. Ale działa wybitnie skutecznie.
- find / -name „backup.tar.gz” przeszuka cały dysk od samego korzenia w poszukiwaniu tego jednego konkretnego pliku. Potrwa to chwilę.
- find /var/www -type f -mtime -7 znajdzie wszystkie pliki w katalogu www, które zostały zmodyfikowane w ciągu ostatnich siedmiu dni. Używamy tego do namierzania złośliwego kodu, który ktoś nam wstrzyknął w weekend na stronę.
Zamiast narzekać na poziom skomplikowania, usiądź wieczorem do klawiatury. Postaw wirtualną maszynę z czystym Debianem. Zacznij kasować, tworzyć i przeszukiwać pliki z poziomu czarnego ekranu terminala. Rozwal ten system. Zainstaluj go ponownie. Tylko w ten sposób te podstawowe komendy Linuxa, które musisz znać – lista z przykładami wejdą ci w krew na stałe, zmuszając twoje palce do pamięci mięśniowej. Przestań w końcu klikać myszką po interfejsach webowych, które tylko ukrywają przed tobą to, co naprawdę dzieje się pod maską serwera.
Często zadawane pytania (FAQ)
- Co robi komenda sudo?
Pozwala ona wykonać polecenie z uprawnieniami głównego administratora systemu (roota). System poprosi cię o twoje hasło przed wykonaniem takiej akcji. - Jak wyczyścić ekran terminala?
Wpisz komendę clear lub wciśnij skrót klawiszowy Ctrl+L. Ekran przewinie się w dół i zrobisz sobie czyste miejsce do pracy. - Jak zatrzymać działający program w terminalu?
Wciśnij kombinację Ctrl+C. To natychmiastowo przerywa wykonywanie obecnego skryptu na pierwszym planie. - Do czego służy znak > w poleceniach?
To przekierowanie strumienia. Zamiast wyświetlać wynik komendy na ekranie, zapisuje go do pliku. Uważaj, bo pojedynczy znak > nadpisuje stary plik. Podwójny znak >> dopisuje tekst na samym końcu pliku. - Jak sprawdzić ile mam wolnego miejsca na dysku?
Użyj komendy df -h. Flaga -h oznacza „human readable”, więc system pokaże wynik w gigabajtach i megabajtach, a nie w surowych blokach pamięci. - Jak pobrać plik z internetu prosto na serwer?
Użyj programu wget lub curl. Wpisujesz po prostu wget i wklejasz adres URL pliku. System ściągnie go do obecnego katalogu roboczego.
Źródła:
1. Fundacja Linux – https://www.linuxfoundation.org
2. Dokumentacja Ubuntu – https://ubuntu.com
3. Projekt Debian – https://www.debian.org
4. Red Hat – https://www.redhat.com
5. Arch Linux Wiki – https://wiki.archlinux.org
