Linux/Docker/Grep
1. Docker / kontenery
Section titled “1. Docker / kontenery”1.1. Co jest uruchomione?
docker ps
docker ps -a
1.2. Logi kontenera
docker logs <nazwa_kontenera>
docker logs -f <nazwa>
1.3. Szczegóły konfiguracji
docker inspect docker inspect
1.4. Wchodzisz do środka
docker exec -it <nazwa> bash
albo
docker exec -it <nazwa> sh
1.5. Reset kontenera
docker compose down
docker compose up -d
1.6. Twardy reset (czyści dane!)
(jeśli masz pewność, że dane nie są potrzebne — inaczej prosisz o backup)
docker compose down -v
docker volume ls
docker volume rm <nazwa_wolumenu>
2. Sieć
Section titled “2. Sieć”2.1. Host → kontener curl http://localhost:xxxx nc -vz localhost xxxx
2.2. Kontener → kontener
docker exec -it
2.3. DNS w dockerze
docker exec -it
2.4. Sprawdzenie otwartych portów w systemie
ss -tulpn | grep
2.5. Firewall
ufw status
iptables -L -n
3. System / Linux
Section titled “3. System / Linux”3.1. Procesy
ps aux | grep <coś>
3.2. Co zajmuje RAM / CPU
top
htop
3.3. Dysk
df -h
du -sh /var/log/\*
3.4. Uprawnienia
ls -la
stat <plik>
3.5. Systemd – sprawdzasz czy usługa żyje
systemctl status <usługa>
journalctl -u <usługa> --no-pager
4. Baza danych
Section titled “4. Baza danych”Sql Server
Section titled “Sql Server”SELECT session_id, login_name, host_name, program_name, status, cpu_time, memory_usage, reads, writes, last_request_start_time, last_request_end_time, database_id FROM sys.dm_exec_sessions WHERE database_id = DB_ID('TwojaBaza'); - Sprawdz userow i sesje
KILL 57; - ubicie sesji
ALTER DATABASE [TwojaBaza] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; - ustawienie w single user
ALTER DATABASE [TwojaBaza] SET MULTI_USER; - multi user
ALTER DATABASE [TwojaBaza] SET MULTI_USER WITH ROLLBACK IMMEDIATE; - to co wyzej ale jak to wyzej nie dziala bo blokuje sie
SELECT s.session_id, s.login_name, s.host_name, s.host_process_id, -- to jest PID procesu klienta s.status, s.program_name, DB_NAME(s.database_id) AS database_name FROM sys.dm_exec_sessions s WHERE s.database_id = DB_ID('TwojaBaza'); - host process to pid
USE master; GO ALTER DATABASE TwojaBaza SET SINGLE_USER; - uzycie mastera, jak inne nie dzialaja forcuje
EXEC sp_who2; - info o sesjach
— Lub:
EXEC sp_who2 active; - tez info o sesjach
PostgreSQL
Section titled “PostgreSQL”4.1. Próba połączenia lokalnego
psql -U <użytkownik> <baza>
4.2. Próba połączenia z hosta
psql -h localhost -U
4.3. Co nasłuchuje ss -tulpn | grep 5432
4.4. Sprawdzenie userów i baz (po wejściu do psql)
\du
\l
4.5. Sprawdzenie błędów postgres cat /var/log/postgresql/postgresql*.log docker logs postgres
4.6. Sprawdzenie pg_hba.conf cat /var/lib/postgresql/data/pg_hba.conf
5. Backend (dowolny język)
Section titled “5. Backend (dowolny język)”5.1. Czy aplikacja wstaje? docker logs backend journalctl -u backend
5.2. Test lokalnego endpointu
curl -v http://localhost:
5.3. Sprawdzenie konfiguracji środowiska docker exec -it backend printenv
5.4. Sprawdzenie uprawnień do plików docker exec -it backend ls -la /app
5.5. Jeśli to .NET dotnet —info dotnet ef database update
5.6. Jeśli to Node
npm ls
npm audit
6. Logi — szybka orientacja
Section titled “6. Logi — szybka orientacja”6.1. Szukasz błędów w logach
grep -i "error" -n log.txt grep -i “fatal” -n log.txt grep -i “exception” -n log.txt grep -i “permission” -n log.txt`
6.2. Wycinek 100 ostatnich linii
tail -100 log.txt
6.3. Logi aplikacji z docker-compose
docker compose logs --tail=200 --follow
7. Minimalizacja problemu
Section titled “7. Minimalizacja problemu”Gdy coś nie działa:
-
Wywalasz 80% konfiguracji.
-
Uruchamiasz tylko jeden kontener.
-
Sprawdzasz najprostsze połączenie.
-
Dopiero zaczynasz dokładać kolejne elementy.
To pozwala od razu ustalić, czy uszkodzona jest:
-
infrastruktura
-
sieć
-
baza
-
aplikacja
-
konfiguracja środowiska
📡 8. Diagnostyka narzędziowa
cURL — twoje podstawowe narzędzie
curl -v http://...
curl -I http://...
netcat — sprawdzenie portu nc -vz host port
dig / nslookup — DNS
dig host
nslookup host
9. Końcowy krok: Czyszczenie cache / locków
Section titled “9. Końcowy krok: Czyszczenie cache / locków”To używasz, gdy wszystko wygląda logicznie, a i tak nie działa.
Docker
docker system prune -a
Linux
rm -f /var/run/\*.pid
Postgres
rm -f /var/lib/postgresql/data/postmaster.pid
10. Jeśli nie masz pewności — ZAWSZE sprawdzasz warstwę niżej
Section titled “10. Jeśli nie masz pewności — ZAWSZE sprawdzasz warstwę niżej”- Backend nie działa → sprawdzasz bazę.
- Baza nie działa → sprawdzasz proces.
- Proces nie działa → sprawdzasz OS.
- OS nie działa → sprawdzasz sprzęt.