Spis treści 11 sekcji
- Te 20 komend Linux pokrywa 90% codziennej pracy Cloud Engineera na serwerach
- Kluczowe obszary: nawigacja po plikach, zarządzanie procesami, diagnostyka sieci, monitoring zasobów
- tail -f, grep, curl i ss to Twoje najważniejsze narzędzia do debugowania
- AWS CLI to de facto 21. komenda - używasz go codziennie do interakcji z usługami AWS
- Praktykuj na instancji EC2 t3.micro w ramach Free Tier - to najlepszy sposób na naukę
Linux w pracy Cloud Engineera
Ponad 90% serwerów w chmurze działa na Linuxie. Oficjalną dokumentację każdej komendy znajdziesz w Linux man pages. Amazon Linux, Ubuntu, RHEL - to systemy, na których stoją usługi, których używasz na co dzień. Nawet jeśli korzystasz głównie z usług zarządzanych (Lambda, RDS, ECS), prędzej czy później trafisz na sytuację, gdzie musisz wejść na serwer przez SSH i zdebugować problem.
Z mojego doświadczenia - nawet w erze serverless, solidna znajomość Linuxa ratuje skórę. Pamiętam sytuację, gdy aplikacja na ECS nagle przestała odpowiadać, a jedyny sposób na diagnozę to SSH na instancję i ręczne przeglądanie logów. Te 20 komend to Twój zestaw przetrwania. Nie musisz być ekspertem od Linuxa - ale musisz być w stanie sprawnie poruszać się po systemie, czytać logi, zarządzać procesami i diagnozować problemy z siecią.
Nawigacja i pliki
1. ls - listowanie plików
# Podstawowe listowanie
ls
# Ze szczegółami (uprawnienia, rozmiar, data)
ls -la
# Posortowane po dacie modyfikacji (najnowsze na górze)
ls -lt
# Rozmiar w human-readable format
ls -lh
# Rekurencyjnie (z podkatalogami)
ls -R /var/log/
Tip: `ls -la` to Twoja domyślna komenda. `-a` pokazuje ukryte pliki (zaczynające się od `.`), `-l` daje szczegóły.
2. cd / pwd - nawigacja
# Zmień katalog
cd /var/log
# Wróć do home directory
cd ~
cd # to samo
# Wróć do poprzedniego katalogu
cd -
# Pokaż bieżący katalog
pwd
# /home/ec2-user
3. cat / less / tail / head - czytanie plików
# Wyświetl cały plik
cat /etc/hostname
# Przegladaj duży plik (z przewijaniem)
less /var/log/syslog
# Ostatnie 20 linii
tail -20 /var/log/nginx/error.log
# Śledź logi w czasie rzeczywistym (KLUCZOWE dla debugowania!)
tail -f /var/log/nginx/access.log
# Pierwsze 10 linii
head -10 /etc/passwd
Pro tip: `tail -f` to jedna z najczęściej używanych komend przy debugowaniu. Widzisz logi w czasie rzeczywistym - idealny do śledzenia requestów i errorów.
4. find - szukanie plików
# Szukaj pliku po nazwie
find / -name "nginx.conf"
# Szukaj plików .log większych niż 100MB
find /var/log -name "*.log" -size +100M
# Szukaj plików zmodyfikowanych w ciągu ostatnich 24h
find /etc -mtime -1
# Szukaj i usuwaj stare logi (ostrożnie!)
find /var/log -name "*.gz" -mtime +30 -delete
5. grep - szukanie w zawartości plików
# Szukaj frazy w pliku
grep "ERROR" /var/log/syslog
# Rekurencyjnie w katalogu
grep -r "database_url" /etc/
# Ignoruj wielkość liter
grep -i "error" /var/log/nginx/error.log
# Pokaż numery linii
grep -n "timeout" /etc/nginx/nginx.conf
# Odwróć - pokaż linie BEZ danej frazy
grep -v "DEBUG" /var/log/app.log
# Zlicz wystąpienia
grep -c "404" /var/log/nginx/access.log
Zarządzanie plikami
6. cp / mv / rm - kopiowanie, przenoszenie, usuwanie
# Kopiuj plik
cp config.yml config.yml.backup
# Kopiuj katalog rekurencyjnie
cp -r /etc/nginx /etc/nginx.backup
# Przenieś/zmień nazwę
mv old-name.txt new-name.txt
# Usuń plik
rm file.txt
# Usuń katalog rekurencyjnie
rm -rf /tmp/old-logs/
7. chmod / chown - uprawnienia
# Nadaj uprawnienia wykonywania skryptowi
chmod +x deploy.sh
# Ustaw uprawnienia numerycznie (rwx r-x r-x)
chmod 755 /var/www/html
# Zmień właściciela pliku
chown nginx:nginx /var/www/html/index.html
# Zmień właściciela rekurencyjnie
chown -R ec2-user:ec2-user /home/ec2-user/app
Schemat uprawnień: r(ead)=4, w(rite)=2, ex(ecute)=1. 755 = rwx(7) r-x(5) r-x(5). 644 = rw- r-- r--.
Zarządzanie procesami
8. ps - lista procesów
# Wszystkie procesy ze szczegółami
ps aux
# Szukaj konkretnego procesu
ps aux | grep nginx
# Drzewo procesów
ps auxf
9. top / htop - monitor zasobów
# Podstawowy monitor
top
# Lepszy monitor (zainstaluj: apt install htop)
htop
# W top: naciśnij M aby sortować po pamięci, P po CPU, q aby wyjść
Na EC2: `top` to pierwszy krok gdy instancja jest wolna. Sprawdzasz CPU, RAM, load average.
10. kill / systemctl - zarządzanie procesami i usługami
# Grzeczne zakończenie procesu
kill PID
# Wymuś zakończenie (gdy kill nie działa)
kill -9 PID
# Zabij wszystkie procesy o nazwie
killall python3
# Zarządzanie usługami systemd
systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx # autostart po reboot
Sieci i debugging
11. curl - requesty HTTP
# Prosty GET
curl https://api.example.com
# Z headers
curl -I https://cloudmaniak.pl
# POST z JSON
curl -X POST https://api.example.com/data \
-H "Content-Type: application/json" \
-d '{"key": "value"}'
# Z verbose (debug połączenia)
curl -v https://api.example.com
# Sprawdź metadata EC2 instance (IMDSv2 - najpierw pobierz token)
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id
Na AWS: `curl http://169.254.169.254/latest/meta-data/` to Twój przyjaciel - daje metadata instancji EC2 (instance ID, region, IAM role, public IP). Pamiętaj o tokenie IMDSv2 - bez niego nowa instancja (m.in. Amazon Linux 2023) odpowie błędem 401.
12. ping - test połączenia
# Test czy host odpowiada
ping 8.8.8.8
# Ogranicz do 5 pakietów
ping -c 5 google.com
13. ss / netstat - otwarte porty i połączenia
# Otwarte porty nasłuchujące (ss - nowoczesny)
ss -tlnp
# Wszystkie połączenia
ss -tunap
# Stary sposób (netstat)
netstat -tlnp
Przydatne gdy: "aplikacja nie działa" - sprawdzasz, czy port jest otwarty i kto na nim nasłuchuje.
14. ssh / scp - zdalne połączenie
# Połączenie SSH z instancją EC2
ssh -i ~/.ssh/my-key.pem [email protected]
# Skopiuj plik na serwer
scp -i ~/.ssh/my-key.pem app.tar.gz [email protected]:/home/ec2-user/
# Skopiuj plik z serwera
scp -i ~/.ssh/my-key.pem [email protected]:/var/log/app.log ./
# Tunnel SSH (dostęp do RDS przez EC2 bastion)
ssh -i key.pem -L 5432:my-rds.abc.eu-central-1.rds.amazonaws.com:5432 ec2-user@bastion-ip
15. dig / nslookup - DNS debugging
# Sprawdź DNS
dig cloudmaniak.pl
# Tylko rekord A
dig +short cloudmaniak.pl A
# Sprawdź jakie serwery DNS odpowiadają
dig cloudmaniak.pl NS
# Alternatywa
nslookup cloudmaniak.pl
Przydatne po zmianach w Route 53 - sprawdzasz, czy DNS się zpropagował.
Zarządzanie systemem
16. df / du - przestrzeń dyskowa
# Wolne miejsce na dyskach
df -h
# Rozmiar katalogu
du -sh /var/log
# Top 10 największych katalogów
du -h /var | sort -rh | head -10
Na EC2: "disk full" to częsty problem. `df -h` to pierwsza komenda gdy instancja zaczyna się zachowywać dziwnie.
17. free - pamięć RAM
# Użycie pamięci
free -h
# Przykładowy output:
# total used free shared buff/cache available
# Mem: 1.9Gi 512Mi 234Mi 10Mi 1.2Gi 1.2Gi
# Swap: 0B 0B 0B
Tip: Patrz na kolumnę "available", nie "free". Linux cache'uje dane w pamięci - "free" może być niskie, ale "available" to realna dostępna pamięć.
18. apt / yum - zarządzanie pakietami
# Ubuntu/Debian
apt update # aktualizuj listę pakietów
apt install nginx # zainstaluj
apt remove nginx # odinstaluj
apt upgrade # zaktualizuj wszystkie pakiety
# Amazon Linux / CentOS / RHEL
yum update
yum install httpd
yum remove httpd
# Amazon Linux 2023
dnf install nginx
19. tar / gzip - archiwizacja
# Stwórz archiwum tar.gz
tar -czf backup.tar.gz /var/www/html/
# Rozpakuj archiwum
tar -xzf backup.tar.gz
# Wylistuj zawartość bez rozpakowywania
tar -tzf backup.tar.gz
20. AWS CLI na Linuxie
# Sprawdź tożsamość (kto jestem?)
aws sts get-caller-identity
# Lista instancji EC2 w regionie
aws ec2 describe-instances --region eu-central-1 \
--query "Reservations[].Instances[].[InstanceId,State.Name,Tags[?Key=='Name'].Value|[0]]" \
--output table
# Pobierz plik z S3
aws s3 cp s3://my-bucket/file.txt ./
# Wyślij logi do CloudWatch
aws logs put-log-events ...
AWS CLI to de facto 21. komenda na tej liście - jako Cloud Engineer używasz go codziennie do interakcji z EC2, S3, CloudWatch i innymi usługami. Pełną listę dostępnych komend znajdziesz w oficjalnej dokumentacji AWS CLI.
Przydatne kombinacje (one-liners)
# Znajdź 10 największych plików w systemie
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -10
# Ile requestów per IP w logach Nginx
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Sprawdź czy port jest otwarty na zdalnym serwerze
nc -zv remote-host 443
# Monitoruj zużycie CPU co 2 sekundy
watch -n 2 "top -bn1 | head -5"
# Szybki HTTP server (test)
python3 -m http.server 8080
Przydatne na AWS EC2
# Metadata instancji
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-ipv4
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/
# User data (skrypt startowy)
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data
# Logi cloud-init (debugowanie user data)
tail -f /var/log/cloud-init-output.log
# Logi systemowe
journalctl -u nginx --since "1 hour ago"
journalctl -xe # ostatnie błędy
Podsumowanie
Te 20 komend to 90% tego, czego używasz na co dzień jako Cloud Engineer na serwerach Linux. Nie musisz znać ich na pamięć od razu - ale musisz wiedzieć, że istnieją i umieć je szybko znaleźć.
Praktykuj na prawdziwym serwerze - uruchom instancję EC2 t3.micro w ramach AWS Free Tier, połącz się przez SSH i ćwicz.
Najczęściej zadawane pytania (FAQ)
Czy Cloud Engineer musi być ekspertem od Linuxa?
Nie musisz być ekspertem, ale solidne podstawy są niezbędne. Te 20 komend z artykułu pokrywa 90% codziennej pracy. Musisz umieć sprawnie poruszać się po systemie plików, czytać logi, zarządzać procesami i diagnozować problemy z siecią. Głębsza wiedza (kernel tuning, kompilacja, administracja) jest opcjonalna i przychodzi z doświadczeniem.
Jaka dystrybucja Linuxa jest najlepsza do nauki AWS?
Na AWS najczęściej spotkasz Amazon Linux 2023 i Ubuntu. Do nauki polecam Ubuntu - ma największą społeczność, mnóstwo tutoriali i jest najbardziej przyjazny dla początkujących. Amazon Linux 2023 to dobry wybór na produkcji (zoptymalizowany pod AWS). Na swoim komputerze możesz ćwiczyć na Ubuntu w WSL2 (Windows) lub natywnie.
Jak ćwiczyć komendy Linux za darmo?
Najlepszy sposób to uruchomienie instancji EC2 t3.micro i połączenie się przez SSH - na koncie założonym po 15 lipca 2025 pokrywasz ją kredytami AWS Free Tier (100 USD na start, do 200 USD łącznie), a na starszym koncie masz 750h/mies. w klasycznym Free Tier. Alternatywnie możesz zainstalować WSL2 na Windows, używać terminala na macOS, lub skorzystać z darmowych platform online jak Killercoda czy Linux Journey. Kluczowe to regularna praktyka na prawdziwym terminalu.
Czy WSL (Windows Subsystem for Linux) wystarczy do nauki?
Tak, WSL2 na Windows to doskonałe narzędzie do nauki Linuxa. Daje pełne środowisko Linux (Ubuntu, Debian) zintegrowane z Windows. Możesz ćwiczyć wszystkie 20 komend z artykułu, instalować Docker Desktop z backendem WSL2, i uruchamiać narzędzia DevOps (AWS CLI, Terraform, Ansible). Jedyny minus - niektóre komendy sieciowe (ss, iptables) działają inaczej niż na prawdziwym serwerze.
Następny krok
Linux to fundament, ale jako Cloud Engineer potrzebujesz też narzędzi, które działają na tych serwerach. Sprawdź Docker dla początkujących - konteneryzacja to kolejny must-have w Twoim zestawie umiejętności. A żeby ćwiczyć te komendy na prawdziwym serwerze za darmo, przeczytaj jak korzystać z AWS Free Tier i postawić swoją pierwszą instancję EC2.
Gdy opanujesz CLI, naturalnym krokiem jest automatyzacja - przeczytaj Automatyzacja AWS z Python i Boto3, żeby zamienić ręczne komendy w powtarzalne skrypty.
