Podstawy Linuxa część 3: zaawansowane komendy

japancat
2025-11-02

To trzecia część przewodnika po podstawach Linuxa. Jeśli dopiero zaczynasz, zapoznaj się najpierw z pierwszą częścią, gdzie omawiamy podstawy i filozofię Linuxa, oraz drugą częścią, w której zaczynamy praktyczną naukę podstawowych komend. Ten wpis skupia się na zaawansowanych poleceniach do zarządzania systemem, procesami, użytkownikami i siecią.

Informacje o systemie#

uname#

Wyświetla podstawowe informacje o systemie i jądrze.

uname -a

Flagi:

  • -a – wszystkie dostępne informacje
  • -s – nazwa systemu (Linux)
  • -r – wersja jądra
  • -m – architektura procesora (x86_64, aarch64)
  • -o – system operacyjny

Przykład:

$ uname -r
6.14.0-36-generic

hostnamectl#

Zarządza nazwą hosta i wyświetla informacje o systemie. Bardziej szczegółowe niż uname.

hostnamectl

Zmiana hostname:

sudo hostnamectl set-hostname nowa-nazwa

Wyświetla:

  • Hostname
  • Static hostname
  • Icon name
  • Chassis
  • Machine ID
  • Boot ID
  • Operating System
  • Kernel
  • Architecture

id#

Wyświetla identyfikatory użytkownika i grup.

id

Przykład:

$ id
uid=1000(japancat) gid=1000(japancat) grupy=1000(japancat),4(adm),27(sudo),999(docker)

Flagi:

  • -u – tylko UID
  • -g – tylko GID grupy podstawowej
  • -G – wszystkie GID grup
  • -n – nazwy zamiast numerów

whoami#

Wyświetla nazwę aktualnego użytkownika. Prostsza wersja id.

whoami

Zarządzanie procesami#

kill#

Wysyła sygnał do procesu (domyślnie SIGTERM).

kill PID

Najpopularniejsze sygnały:

  • SIGTERM (15) – prośba o zakończenie (default)
  • SIGKILL (9) – natychmiastowe zakończenie (nie da się zignorować)
  • SIGHUP (1) – przeładowanie konfiguracji
  • SIGSTOP (19) – wstrzymanie procesu

Przykłady:

kill 1234              # SIGTERM do procesu 1234
kill -9 1234           # SIGKILL do procesu 1234
kill -HUP 1234         # przeładuj konfigurację

killall#

Zabija wszystkie procesy o podanej nazwie.

killall firefox
killall -9 chrome

UWAGA: Używaj ostrożnie, zabija wszystkie instancje programu.

jobs#

Wyświetla procesy działające w tle w aktualnej sesji shella.

jobs

Przykład:

$ jobs
[1]   Running                 ping google.com &
[2]-  Stopped                 vim plik.txt
[3]+  Running                 sleep 100 &

Znaki:

  • + – ostatnio uruchomiony job (default dla fg/bg)
  • - – przedostatni job

bg#

Wznawia zatrzymany proces w tle.

bg %1              # wznów job nr 1
bg                 # wznów ostatni job

fg#

Przenosi proces z tła na pierwszy plan.

fg %1              # przenieś job nr 1 na pierwszy plan
fg                 # przenieś ostatni job

& (ampersand)#

Uruchamia komendę w tle od razu.

ping google.com &

Workflow:

  1. Uruchom proces: ping google.com
  2. Zatrzymaj: Ctrl+Z
  3. Wznów w tle: bg
  4. Zobacz jobs: jobs
  5. Przenieś na pierwszy plan: fg

Shell i nawigacja#

history#

Wyświetla historię wykonanych komend.

history
history 20         # ostatnie 20 komend

Przydatne sztuczki:

!!                 # powtórz ostatnią komendę
!123               # wykonaj komendę nr 123 z historii
!ping              # wykonaj ostatnią komendę zaczynającą się na "ping"
sudo !!            # powtórz ostatnią komendę z sudo

Szukanie w historii:

  • Ctrl+R – wyszukiwanie wstecz
  • Ctrl+S – wyszukiwanie w przód

Historia przechowywana w ~/.bash_history lub ~/.zsh_history.

alias#

Tworzy skróty do często używanych komend.

alias ll='ls -lah'
alias update='sudo apt update && sudo apt upgrade -y'
alias gs='git status'

Zobacz aktualne aliasy:

alias

Usuń alias:

unalias ll

Aliasy permanentne dodaj do ~/.bashrc lub ~/.zshrc. Jeśli chcesz dowiedzieć się więcej o konfiguracji terminala, sprawdź mój artykuł o kolorowym terminalu w Linuxie.

Autouzupełnianie#

Tab – autouzupełnianie komend, ścieżek, nazw plików.

cd /var/lo[Tab]    # uzupełni do /var/log/
systemctl sta[Tab] # pokaże: start, status

Tab Tab – pokaż wszystkie możliwości, jeśli jest więcej niż jedna.

Zaawansowane autouzupełnianie (bash-completion):

sudo apt install bash-completion

Przekierowania#

Kierowanie wyjścia i wejścia komend.

> (nadpisanie)#

Przekierowuje stdout do pliku (nadpisuje zawartość).

echo "Hello" > plik.txt
ls -la > lista.txt

>> (dopisanie)#

Przekierowuje stdout do pliku (dopisuje na końcu).

echo "Linia 1" > log.txt
echo "Linia 2" >> log.txt

< (wejście)#

Przekierowuje zawartość pliku na stdin.

sort < lista.txt
mysql -u root -p database < dump.sql

Kombinacje:

cat plik1.txt > plik2.txt              # kopiowanie
ls -la >> log.txt 2>&1                 # stdout i stderr do pliku
command > output.txt 2> error.txt      # osobne pliki dla stdout/stderr
command &> all.txt                     # stdout i stderr do jednego pliku

Archiwizacja#

tar#

Główne narzędzie do archiwizacji w Linuxie.

Tworzenie archiwum:

tar -czf archiwum.tar.gz katalog/
tar -cjf archiwum.tar.bz2 katalog/
tar -cJf archiwum.tar.xz katalog/

Flagi:

  • -c – create (tworzenie)
  • -x – extract (wypakowywanie)
  • -t – list (listowanie zawartości)
  • -v – verbose (pokazuj pliki)
  • -f – file (nazwa archiwum)
  • -z – gzip
  • -j – bzip2
  • -J – xz

Wypakowywanie:

tar -xzf archiwum.tar.gz
tar -xzf archiwum.tar.gz -C /tmp/     # wypakuj do /tmp/

Listowanie zawartości:

tar -tzf archiwum.tar.gz

Dodawanie plików do archiwum:

tar -rzf archiwum.tar.gz nowy-plik.txt

zip / unzip#

Kompatybilność z Windowsem i ogólnym światem.

Tworzenie archiwum:

zip -r archiwum.zip katalog/
zip plik.zip plik.txt

Wypakowywanie:

unzip archiwum.zip
unzip archiwum.zip -d /tmp/           # wypakuj do /tmp/

Listowanie zawartości:

unzip -l archiwum.zip

gzip#

Kompresja pojedynczych plików.

gzip plik.txt                         # tworzy plik.txt.gz (usuwa oryginał)
gzip -k plik.txt                      # zachowaj oryginał
gunzip plik.txt.gz                    # dekompresja

Kompresja na stdout:

gzip -c plik.txt > plik.txt.gz        # zachowaj oryginał

Sieć#

ping#

Testuje łączność z hostem.

ping google.com
ping -c 4 8.8.8.8                     # tylko 4 pakiety
ping -i 0.2 192.168.1.1               # co 0.2s (wymaga sudo)

Flagi:

  • -c N – liczba pakietów
  • -i N – interwał w sekundach
  • -W N – timeout
  • -s N – rozmiar pakietu

curl#

HTTP client do pobierania i testowania API.

curl https://example.com
curl -o plik.html https://example.com         # zapisz do pliku
curl -O https://example.com/plik.zip          # zapisz z nazwą z URL

HTTP metody:

curl -X GET https://api.example.com/users
curl -X POST https://api.example.com/users -d '{"name":"Jan"}'
curl -X DELETE https://api.example.com/users/1

Headers i autentykacja:

curl -H "Authorization: Bearer TOKEN" https://api.example.com
curl -u user:password https://example.com

Follow redirects:

curl -L https://example.com

wget#

Pobieranie plików z sieci.

wget https://example.com/plik.zip
wget -O nowa-nazwa.zip https://example.com/plik.zip
wget -c https://example.com/duzy-plik.iso     # wznów przerwane pobieranie

Rekurencyjne pobieranie:

wget -r -np -k https://example.com/           # pobierz całą stronę

Flagi:

  • -c – continue (wznów pobieranie)
  • -r – recursive
  • -np – no parent (nie schodź wyżej)
  • -k – convert links
  • -O – output filename

ip#

Zarządzanie interfejsami sieciowymi, adresami IP i routingiem. Zastępuje stare ifconfig.

Wyświetl interfejsy:

ip addr                               # wszystkie interfejsy
ip a                                  # skrót
ip link                               # statusy interfejsów

Dodaj/usuń IP:

sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr del 192.168.1.100/24 dev eth0

Włącz/wyłącz interfejs:

sudo ip link set eth0 up
sudo ip link set eth0 down

Routing:

ip route                              # tabela routingu
sudo ip route add default via 192.168.1.1
sudo ip route del default via 192.168.1.1

ss#

Socket statistics – informacje o połączeniach sieciowych. Zastępuje netstat.

ss -tuln                              # listening ports (TCP i UDP)
ss -tulnp                             # z procesami (wymaga sudo)
ss -s                                 # statystyki

Flagi:

  • -t – TCP
  • -u – UDP
  • -l – listening
  • -n – numery portów zamiast nazw
  • -p – procesy
  • -a – wszystkie połączenia

Filtrowanie:

ss -tn state established              # aktywne połączenia TCP
ss -tn dst 192.168.1.1                # połączenia do IP
ss -tn sport :22                      # połączenia na porcie 22

Jeśli chcesz dowiedzieć się więcej o pracy zdalnej z serwerami, sprawdź mój poradnik jak używać SSH.

Zarządzanie użytkownikami#

useradd#

Tworzy nowego użytkownika.

sudo useradd janusz
sudo useradd -m -s /bin/bash janusz           # z katalogiem domowym i shellem
sudo useradd -m -G sudo,docker janusz         # z grupami

Flagi:

  • -m – utwórz katalog domowy
  • -s – shell (default: /bin/sh)
  • -G – dodatkowe grupy
  • -d – niestandardowy katalog domowy
  • -u – UID

Lepsze: adduser (interaktywny wrapper):

sudo adduser janusz

userdel#

Usuwa użytkownika.

sudo userdel janusz
sudo userdel -r janusz                        # usuń z katalogiem domowym

usermod#

Modyfikuje użytkownika.

sudo usermod -aG docker janusz                # dodaj do grupy
sudo usermod -s /bin/zsh janusz               # zmień shell
sudo usermod -l nowanazwa stara               # zmień login
sudo usermod -L janusz                        # zablokuj konto
sudo usermod -U janusz                        # odblokuj konto

Flagi:

  • -aG – append to groups (dodaj do grup)
  • -G – set groups (ustaw grupy, nadpisuje)
  • -s – shell
  • -l – login name
  • -L – lock
  • -U – unlock

passwd#

Zmienia hasło użytkownika.

passwd                                        # zmień swoje hasło
sudo passwd janusz                            # zmień hasło użytkownika janusz

Inne operacje:

sudo passwd -l janusz                         # zablokuj hasło (lock)
sudo passwd -u janusz                         # odblokuj hasło (unlock)
sudo passwd -d janusz                         # usuń hasło (delete)
sudo passwd -e janusz                         # wymuś zmianę przy logowaniu (expire)

Jeśli chcesz skonfigurować sudo bez hasła, zobacz mój poradnik jak używać sudo bez hasła.

Zarządzanie usługami#

systemctl#

Główne narzędzie do zarządzania usługami w systemach z systemd (Debian, Ubuntu, Fedora, Arch itp.).

Status usługi:

systemctl status nginx
systemctl status ssh
systemctl is-active nginx                     # czy działa
systemctl is-enabled nginx                    # czy autostart

Start/stop/restart:

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx                   # przeładuj konfigurację bez restartu

Autostart:

sudo systemctl enable nginx                   # włącz autostart
sudo systemctl disable nginx                  # wyłącz autostart
sudo systemctl enable --now nginx             # enable + start

Lista usług:

systemctl list-units --type=service           # działające usługi
systemctl list-units --type=service --all     # wszystkie
systemctl list-unit-files --type=service      # z statusem enabled/disabled

Logi usługi (journalctl):

sudo journalctl -u nginx                      # logi usługi nginx
sudo journalctl -u nginx -f                   # follow (na żywo)
sudo journalctl -u nginx --since today
sudo journalctl -u nginx --since "2025-11-01"

Restart systemu:

sudo systemctl reboot
sudo systemctl poweroff

Podsumowanie#

Poznanie tych komend stawia Cię na dobrej drodze do sprawnego administrowania systemami Linux. Zarządzanie procesami (kill, jobs, bg, fg), użytkownikami (useradd, usermod, passwd), usługami (systemctl) i diagnostyka sieci (ping, ip, ss) to podstawa codziennej pracy administratora. Archiwizacja (tar, gzip) i przekierowania (>, >>, <) przydają się przy backupach i automatyzacji. Praktykuj te polecenia regularnie – doświadczenie to najlepszy nauczyciel w świecie Linuxa.