Podstawy Linux – lista komend

Wszystkie komendy z serii Podstawy Linux w jednym miejscu. Uporządkowane tematycznie — od pierwszego logowania po utrzymanie serwera.


Połączenie SSH

ssh root@ADRES_IP                       # logowanie hasłem
ssh -p 2222 root@ADRES_IP               # niestandardowy port
ssh -i ~/.ssh/klucz root@ADRES_IP       # logowanie kluczem
ssh -v root@ADRES_IP                    # debug połączenia
ssh moj-serwer                          # alias z ~/.ssh/config

Klucze SSH

# Generowanie klucza (macOS/Linux)
ssh-keygen -t ed25519 -C moj-serwer -f ~/.ssh/moj-serwer

# Kopiowanie klucza na serwer
ssh-copy-id -i ~/.ssh/moj-serwer.pub UŻYTKOWNIK@ADRES_SERWERA

# Dodanie klucza do agenta
ssh-add ~/.ssh/moj-serwer

# Sprawdzenie kluczy w agencie
ssh-add -l

Plik ~/.ssh/config:

Host moj-serwer
  HostName ADRES_IP
  User roman
  Port 2222
  IdentityFile ~/.ssh/moj-serwer
  AddKeysToAgent yes

Użytkownicy i grupy

sudo adduser roman                       # utwórz użytkownika
sudo usermod -aG sudo roman              # dodaj do grupy sudo
sudo usermod -aG docker roman            # dodaj do grupy docker
groups roman                             # pokaż grupy
id roman                                 # UID, GID, grupy
su - roman                               # przełącz się na użytkownika
sudo passwd roman                        # zmień hasło
sudo userdel -r roman                    # usuń użytkownika + katalog

Nawigacja

pwd                                      # gdzie jestem
ls -la                                   # lista plików (+ ukryte)
ls -lh                                   # lista z czytelnymi rozmiarami
cd /var/log                              # przejdź do katalogu
cd ..                                    # katalog nadrzędny
cd ~                                     # katalog domowy
cd -                                     # poprzedni katalog

Pliki i katalogi

touch plik.txt                           # utwórz pusty plik
mkdir -p projekt/{config,data,logs}      # utwórz strukturę katalogów
cp plik.txt kopia.txt                    # kopiuj plik
cp -r katalog/ kopia/                    # kopiuj katalog
mv stara.txt nowa.txt                    # zmień nazwę / przenieś
rm plik.txt                              # usuń plik
rm -rf katalog/                          # usuń katalog (ostrożnie!)

Odczyt plików

cat plik.txt                             # wyświetl cały plik
less plik.txt                            # przeglądanie z przewijaniem
head -n 20 plik.txt                      # pierwsze 20 linii
tail -n 20 plik.txt                      # ostatnie 20 linii
tail -f /var/log/syslog                  # śledzenie na żywo

Przekierowania i potoki

echo "tekst" > plik.txt                  # nadpisz plik
echo "tekst" >> plik.txt                 # dopisz na końcu
cat log.txt | grep "error"               # potok (pipe)
komenda1 && komenda2                     # wykonaj jeśli poprzednia OK
komenda1 || komenda2                     # wykonaj jeśli poprzednia FAIL
komenda1 ; komenda2                      # wykonaj niezależnie

Wyszukiwanie

find /etc -name "nginx.conf"             # szukaj po nazwie
find /var/log -name "*.log" -size +50M   # pliki > 50 MB
find /tmp -type f -mtime +7              # starsze niż 7 dni
grep "error" /var/log/syslog             # szukaj tekstu
grep -ri "listen 80" /etc/nginx/         # rekurencyjnie, case-insensitive
grep -c "404" /var/log/nginx/access.log  # policz wystąpienia
find /etc -name "*.conf" -exec grep -l "ssl" {} \;  # szukaj w plikach

Edytory

nano plik.txt                            # prosty edytor
# CTRL+O = zapisz, CTRL+X = wyjdź, CTRL+W = szukaj

vim plik.txt                             # zaawansowany edytor
# i = tryb INSERT, Esc = tryb normalny, :wq = zapisz i wyjdź, :q! = wyjdź bez zapisu

Uprawnienia

chmod 755 skrypt.sh                      # rwxr-xr-x
chmod 644 config.yml                     # rw-r--r--
chmod +x skrypt.sh                       # dodaj prawo wykonywania
sudo chown roman:roman plik.txt          # zmień właściciela
sudo chown -R roman:roman /opt/app/      # rekurencyjnie

Procesy

ps aux                                   # wszystkie procesy
ps aux | grep nginx                      # znajdź proces
top                                      # monitor (q = wyjście)
htop                                     # ładniejszy monitor
kill 1234                                # zakończ proces PID 1234
kill -9 1234                             # wymuś zakończenie
killall nginx                            # zakończ wszystkie nginx
sudo ss -tlnp | grep :80                 # kto zajmuje port 80

Pamięć i dysk

free -h                                  # pamięć RAM
df -h                                    # miejsce na dyskach
du -sh /var/log                          # rozmiar katalogu
du -sh /var/log/* | sort -rh | head -10  # top 10 największych

Pakiety (apt)

sudo apt update                          # odśwież listę
sudo apt upgrade -y                      # zaktualizuj wszystko
sudo apt install htop                    # zainstaluj
sudo apt remove htop                     # odinstaluj
sudo apt purge htop                      # odinstaluj + usuń config
sudo apt autoremove -y                   # usuń zbędne zależności
sudo apt autoclean                       # wyczyść cache
apt search nginx                         # szukaj pakietu
dpkg -l | grep nginx                     # czy zainstalowany

Zmienne środowiskowe

echo $PATH                               # ścieżki programów
echo $HOME                               # katalog domowy
echo $USER                               # bieżący użytkownik
export MY_VAR="wartość"                  # ustaw zmienną (sesja)
echo 'export MY_VAR="wartość"' >> ~/.bashrc  # trwale
source ~/.bashrc                         # załaduj bez restartu

Sieć

ping -c 4 google.com                     # test połączenia
ip a                                     # adresy IP
curl -s ifconfig.me                      # publiczny IP serwera
ss -tlnp                                 # otwarte porty + procesy
curl -I https://example.com              # nagłówki HTTP
wget https://example.com/plik.zip        # pobierz plik

Transfer plików

scp plik.txt moj-serwer:/home/roman/     # wyślij na serwer
scp moj-serwer:/var/log/app.log ./       # pobierz z serwera
scp -r katalog/ moj-serwer:/opt/         # wyślij katalog

Kompresja

tar -czvf backup.tar.gz /opt/app/        # utwórz archiwum
tar -xzvf backup.tar.gz                  # rozpakuj
tar -xzvf backup.tar.gz -C /opt/restore/ # rozpakuj do katalogu
tar -tzvf backup.tar.gz                  # podgląd zawartości
zip -r archiwum.zip katalog/             # utwórz ZIP
unzip archiwum.zip                       # rozpakuj ZIP

Firewall (ufw)

sudo ufw status verbose                  # status
sudo ufw default deny incoming           # blokuj przychodzący
sudo ufw default allow outgoing          # zezwól wychodzący
sudo ufw allow ssh                       # zezwól SSH
sudo ufw allow 80                        # HTTP
sudo ufw allow 443                       # HTTPS
sudo ufw allow from 1.2.3.4 to any port 5432  # PostgreSQL z konkretnego IP
sudo ufw enable                          # włącz
sudo ufw status numbered                 # reguły z numerami
sudo ufw delete 3                        # usuń regułę nr 3

Zabezpieczenie serwera

Edycja /etc/ssh/sshd_config:

PasswordAuthentication no                # wyłącz logowanie hasłem
PubkeyAuthentication yes                 # włącz klucze
PermitRootLogin no                       # wyłącz logowanie jako root
Port 2222                                # zmień port SSH (opcjonalnie)
sudo systemctl restart sshd              # restart SSH po zmianach

Fail2ban

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status sshd         # ile IP zablokowanych
sudo fail2ban-client set sshd unbanip IP # odblokuj IP

Automatyczne aktualizacje bezpieczeństwa

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

Monitoring i logi

uptime                                   # czas działania + load
who                                      # kto jest zalogowany
w                                        # kto + co robi
last | head -20                          # ostatnie logowania
sudo lastb | head -20                    # nieudane logowania
sudo tail -f /var/log/auth.log           # logi auth na żywo

Usługi (systemctl)

sudo systemctl status docker             # status usługi
sudo systemctl restart docker            # restart
sudo journalctl -u docker --since "1 hour ago"  # logi usługi
sudo journalctl -u docker -f             # logi na żywo

Higiena serwera

# Szybki health check po zalogowaniu
uptime && free -h && df -h /

# Pełna aktualizacja
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean

# Czyszczenie logów
sudo journalctl --vacuum-time=7d

# Czyszczenie Dockera
docker system prune -f

# Sprawdź czy potrzebny restart
cat /var/run/reboot-required

# Backup z datą
sudo tar -czf /root/backup-$(date +%Y%m%d).tar.gz /opt/moje-aplikacje /etc/nginx

Cron (automatyczne zadania)

sudo crontab -e                          # edytuj zadania cron
# Format: minuta godzina dzień miesiąc dzień_tygodnia komenda
# Backup co niedzielę o 3:00:
0 3 * * 0 tar -czf /root/backup-$(date +\%Y\%m\%d).tar.gz /opt/moje-aplikacje

Historia komend

history                                  # pokaż historię
history | grep apt                       # szukaj w historii
!!                                       # powtórz ostatnią komendę
sudo !!                                  # ostatnia komenda z sudo

System

sudo reboot                              # restart serwera
sudo shutdown -h now                     # wyłączenie

Pomoc

man ls                                   # pełna dokumentacja
ls --help                                # krótka pomoc
whatis ls                                # jednozdaniowy opis
apropos "copy file"                      # szukaj komendy po opisie
which nginx                              # ścieżka do programu

Pełne wyjaśnienia każdej komendy znajdziesz w artykułach z serii Podstawy Linux

Roman Rozenberger
Roman Rozenberger

Jestem digital marketerem ze specjalizacją w marketingu w wyszukiwarkach internetowych. Wdrażam automatyzacje z wykorzystaniem narzędzi LowCode, NoCode i AI. Identyfikuje procesy i rozwiązuję problemy.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *