Podstawy Linux – lista komend

Wszystkie komendy z serii Podstawy Linux w jednym miejscu. Uporządkowane tematycznie — od pierwszego logowania po utrzymanie serwera.
Na tej stronie:
pokaż
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






