Debian - shell
To kompendium dotyczy codziennej pracy administracyjnej w Debianie z powłoki. Dla przeglądu samych powłok zobacz Shelle w Debianie - przegląd, a dla automatyzacji Programowanie w shellu. Zdalną pracę opisuje SSH i zdalna administracja.
Samodzielne kompendium do codziennej pracy w Debianie z terminala lub przez SSH.
Cel: sprawnie poruszać się po systemie, pracować z plikami, procesami i siecią, aktualizować pakiety, obsługiwać systemd, czytać logi i diagnozować typowe awarie.
Debian - administrator, system i katalogi
sudo
Polecenie uruchamia pojedynczą komendę z uprawnieniami administratora:
sudo apt update
Interaktywny shell roota:
sudo -i
Po zakończeniu:
exit
Nie ma potrzeby pracować cały czas jako root. sudo ogranicza ryzyko przypadkowego wykonania destrukcyjnej komendy.
Wersja Debiana
cat /etc/os-release
Przykładowy wynik:
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
Najważniejsze katalogi
/ korzeń systemu
/etc konfiguracja systemowa
/home katalogi użytkowników
/root katalog domowy roota
/var zmienne dane systemowe
/var/log klasyczne pliki logów
/tmp dane tymczasowe
/usr programy, biblioteki i dane
/opt dodatkowe oprogramowanie
/dev urządzenia
/proc wirtualne informacje o procesach i kernelu
/sys informacje o urządzeniach i kernelu
/boot kernel i pliki startowe
/srv dane usług, jeśli administrator tak je organizuje
1. Shell, terminal i polecenia - co właściwie robisz?
Terminal to okno, w którym wpisujesz polecenia.
Shell to program, który te polecenia interpretuje.
Typowe shelle:
- Debian domyślnie często używa
bashdla zwykłych użytkowników. - możesz też używać
zsh,fishitd.
Sprawdzenie aktualnego shella:
echo "$SHELL"
Przykładowy wynik:
/bin/bash
To oznacza, że twoim domyślnym shellem jest Bash.
Sprawdzenie, jaki proces shella działa teraz:
ps -p $$ -o comm=
Przykładowy wynik:
bash
2. pwd - gdzie jestem?
Polecenie:
pwd
pwd oznacza print working directory.
Pokazuje pełną ścieżkę do katalogu, w którym aktualnie się znajdujesz.
Przykład:
pwd
Wynik:
/home/user/projects/example-site
Dzięki temu wiesz, że wszystkie polecenia z nazwami względnymi będą wykonywane względem tego katalogu.
Przydaje się szczególnie wtedy, gdy:
- pracujesz głęboko w strukturze katalogów,
- używasz
rm,mv,cp, - logujesz się na obcy serwer i nie pamiętasz, gdzie jesteś.
3. ls - co jest w katalogu?
Podstawowa forma:
ls
Pokazuje pliki i katalogi w bieżącym katalogu.
Przykład:
ls
Wynik:
README.md config main.go static templates
Najważniejsze przełączniki
-l
ls -l
Pokazuje szczegóły:
- prawa dostępu,
- liczbę dowiązań,
- właściciela,
- grupę,
- rozmiar,
- datę modyfikacji,
- nazwę.
Przykład:
-rw-r--r-- 1 user user 1820 Sep 19 07:00 README.md
drwxr-xr-x 3 user user 4096 Sep 18 22:10 static
-a
ls -a
Pokazuje także pliki ukryte.
W Unixie plik jest ukryty, jeśli nazwa zaczyna się od kropki:
.git
.ssh
.config
.bashrc
-h
ls -lh
Pokazuje rozmiary w czytelnej formie:
1.2K
54M
2.1G
zamiast:
1256
56623104
2254857830
-t
ls -lt
Sortuje od najnowszych plików.
-S
ls -lS
Sortuje według rozmiaru.
Najczęściej używana wersja
ls -lah
Dostajesz:
- wszystkie pliki,
- szczegóły,
- czytelne rozmiary.
4. cd - zmiana katalogu
Polecenie:
cd katalog
Przechodzi do wskazanego katalogu.
Przykład:
cd /etc
Teraz pracujesz w:
/etc
Najważniejsze warianty
Katalog wyżej
cd ..
Przykład:
/home/user/projects
po:
cd ..
trafisz do:
/home/user
Katalog domowy
cd ~
albo samo:
cd
Przenosi do katalogu domowego użytkownika.
Poprzedni katalog
cd -
Przełącza między bieżącym i poprzednim katalogiem.
Przykład:
cd /etc
cd /var/log
cd -
wróci do:
/etc
5. Ścieżki względne i absolutne
Ścieżka absolutna zaczyna się od /.
Przykład:
/etc/nginx/nginx.conf
Ścieżka względna jest liczona od bieżącego katalogu.
Jeśli jesteś w:
/home/user/project
to:
cat config/app.conf
oznacza:
/home/user/project/config/app.conf
.
Bieżący katalog:
./script.sh
..
Katalog nadrzędny:
../config
6. touch - tworzenie pustego pliku i zmiana czasu modyfikacji
touch test.txt
Jeśli plik nie istnieje, zostanie utworzony.
Jeśli istnieje, jego czas modyfikacji zostanie odświeżony.
Przydaje się do:
- tworzenia pustych plików,
- testów,
- tworzenia placeholderów,
- aktualizacji znacznika czasu.
Przykład:
touch README.md
ls -l README.md
7. mkdir - tworzenie katalogów
Podstawowo:
mkdir backup
Tworzy katalog backup.
-p
mkdir -p app/config/nginx
Tworzy całą strukturę, nawet jeśli katalogi pośrednie nie istnieją.
Bez -p polecenie zakończyłoby się błędem, jeśli app lub config nie istnieją.
8. cp - kopiowanie
Podstawowo:
cp source.txt copy.txt
Tworzy kopię pliku.
-r
Kopiowanie katalogu wraz z zawartością:
cp -r config/ config-backup/
-i
Pyta przed nadpisaniem:
cp -i config.conf config.conf.bak
-v
Pokazuje, co jest kopiowane:
cp -v file.txt /tmp/
Przykładowy wynik:
'file.txt' -> '/tmp/file.txt'
Typowy przypadek
Przed edycją konfiguracji:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
To prosty i bardzo dobry nawyk.
9. mv - przenoszenie i zmiana nazwy
Zmiana nazwy:
mv old.txt new.txt
Przeniesienie:
mv file.txt /tmp/
-i
Pyta przed nadpisaniem:
mv -i file.txt /etc/app/
-v
Pokazuje operację:
mv -v old.txt new.txt
10. rm - usuwanie
Usuwanie pliku:
rm file.txt
-i
Pyta przed usunięciem:
rm -i file.txt
-r
Usuwa katalog rekurencyjnie:
rm -r old-project/
-f
Wymusza usuwanie bez pytań:
rm -f file.txt
-rf
rm -rf directory/
Usuwa katalog i wszystko w środku bez pytania.
To jedna z najbardziej niebezpiecznych komend w Unixie.
Przed rm -rf warto sprawdzić:
pwd
ls
i dopiero potem wykonać usuwanie.
11. cat - szybkie wyświetlenie pliku
cat config.txt
Wyświetla cały plik na ekranie.
Dobre dla krótkich plików.
Słabe dla pliku mającego 20 000 linii, bo wszystko wyleci naraz.
Przydaje się do:
cat /etc/os-release
cat /etc/hostname
cat README.md
12. less - wygodne czytanie dużych plików
less /var/log/syslog
Pozwala przewijać plik.
Sterowanie:
strzałki przewijanie
PgUp/PgDn strony
g początek
G koniec
/tekst wyszukiwanie
n następny wynik
N poprzedni wynik
q wyjście
Bardzo przydatne:
less /var/log/messages
na FreeBSD albo:
journalctl | less
na Debianie.
13. head - początek pliku
Domyślnie:
head file.txt
pokazuje pierwsze 10 linii.
-n
head -n 30 file.txt
pokazuje pierwsze 30 linii.
Przydatne np. do szybkiego obejrzenia CSV, logu albo konfiguracji.
14. tail - koniec pliku
Domyślnie:
tail file.log
pokazuje ostatnie 10 linii.
-n
tail -n 100 file.log
pokazuje ostatnie 100 linii.
-f
tail -f file.log
Śledzi plik na żywo.
Kiedy aplikacja dopisuje nową linię do logu, widzisz ją od razu.
Zatrzymanie:
Ctrl+C
15. grep - wyszukiwanie tekstu
Najprościej:
grep "error" app.log
Pokazuje wszystkie linie zawierające error.
-i
Ignoruje wielkość liter:
grep -i "error" app.log
znajdzie:
error
Error
ERROR
-n
Pokazuje numery linii:
grep -n "listen" nginx.conf
-R
Szuka rekurencyjnie w katalogach:
grep -R "example.com" /etc/nginx/
-v
Pokazuje linie, które NIE pasują:
grep -v "^#" config.conf
Przydatne do usuwania komentarzy z widoku.
-E
Rozszerzone wyrażenia regularne:
grep -E "error|warning|critical" app.log
Bardzo praktyczne
Pokaż niepuste linie bez komentarzy:
grep -Ev '^\s*($|#)' config.conf
16. find - znajdowanie plików
Podstawowo:
find /etc -name "nginx.conf"
Szuka pliku od katalogu /etc.
-name
Dokładne dopasowanie wielkości liter:
find . -name "*.md"
-iname
Bez rozróżniania wielkości liter:
find . -iname "*.jpg"
-type
Tylko pliki:
find . -type f
Tylko katalogi:
find . -type d
-mtime
Pliki zmodyfikowane w ostatniej dobie:
find . -type f -mtime -1
Starsze niż 30 dni:
find . -type f -mtime +30
-size
Duże pliki:
find /var -type f -size +100M
Znajdzie pliki większe niż 100 MB.
17. which, command -v, whereis - gdzie jest program?
Najbardziej przenośne:
command -v nginx
Przykładowy wynik:
/usr/sbin/nginx
which:
which curl
też zwykle zwróci ścieżkę.
whereis może pokazać więcej:
whereis nginx
np.:
nginx: /usr/sbin/nginx /usr/share/man/man8/nginx.8.gz
18. file - czym jest plik?
file program
Możliwy wynik:
ELF 64-bit LSB pie executable, x86-64
albo:
ASCII text
albo:
PNG image data
Przydaje się, gdy rozszerzenie pliku nic nie mówi.
19. stat - szczegółowe informacje o pliku
stat README.md
Pokazuje m.in.:
- rozmiar,
- inode,
- właściciela,
- prawa,
- czas modyfikacji,
- czas dostępu.
20. man - dokumentacja poleceń
man grep
Otwiera manual do grep.
Sterowanie podobne jak w less.
Szukanie:
/pattern
Wyjście:
q
Sekcje manuala są ważne.
Przykład:
man 5 rc.conf
Sekcja 5 to formaty plików konfiguracyjnych.
Na FreeBSD to szczególnie użyteczne.
21. echo - wypisywanie tekstu i zmiennych
echo "Hello"
Wynik:
Hello
Zmienne:
echo "$HOME"
Przykład:
/home/user
Przydatne do sprawdzania:
echo "$PATH"
echo "$USER"
echo "$SHELL"
22. Przekierowanie > i >>
> zapisuje wynik do pliku i nadpisuje jego zawartość.
uname -a > system.txt
>> dopisuje na końcu:
df -h >> system.txt
Po tych dwóch poleceniach system.txt zawiera informacje o kernelu i dyskach.
23. Potok |
Przekazuje wynik jednego polecenia do kolejnego.
ps aux | grep nginx
Najpierw ps aux wypisuje procesy.
Potem grep nginx zostawia tylko linie zawierające nginx.
Inny przykład:
du -sh * | sort -h
Najpierw du liczy rozmiary katalogów.
Potem sort -h sortuje je według rozmiaru.
24. sort, uniq, wc
sort
sort names.txt
Sortuje linie alfabetycznie.
Numerycznie:
sort -n numbers.txt
Czytelne rozmiary:
sort -h
uniq
Usuwa powtarzające się kolejne linie:
sort names.txt | uniq
Zliczenie:
sort names.txt | uniq -c
wc
wc file.txt
Pokazuje:
- linie,
- słowa,
- bajty.
Tylko linie:
wc -l file.txt
25. whoami, id, groups
whoami:
whoami
Wynik:
user
id:
id
Przykład:
uid=1000(user) gid=1000(user) groups=1000(user),27(sudo)
groups:
groups
Pokazuje grupy użytkownika.
Przydaje się przy problemach z prawami dostępu.
26. who i w
who:
who
Pokazuje zalogowanych użytkowników.
w:
w
Pokazuje:
- kto jest zalogowany,
- z jakiego adresu,
- jak długo,
- co wykonuje,
- load average.
28. uname - kernel i platforma
uname
Najczęściej zwróci:
Linux
albo:
FreeBSD
-a
uname -a
Pokazuje dużo informacji naraz:
- system,
- hostname,
- wersję kernela,
- architekturę.
-r
uname -r
Wersja kernela.
30. hostname
hostname
Pokazuje nazwę komputera.
Debian może dodatkowo używać:
hostnamectl
który pokazuje:
- hostname,
- system,
- kernel,
- architekturę.
31. uptime
uptime
Przykładowy wynik:
07:24:01 up 12 days, 3:14, 1 user, load average: 0.15, 0.22, 0.18
Odczytasz:
- aktualny czas,
- czas działania systemu,
- liczbę użytkowników,
- load average.
32. top - procesy i obciążenie
top
Pokazuje na żywo:
- procesy,
- CPU,
- RAM,
- load,
- czas działania.
Wyjście:
q
Przydaje się, gdy system:
- zwolnił,
- grzeje CPU,
- zużywa dużo RAM,
- jakiś proces zwariował.
33. ps - lista procesów
Najczęściej:
ps aux
Pokazuje wszystkie procesy.
Najważniejsze kolumny:
USER- właściciel,PID- numer procesu,%CPU,%MEM,COMMAND.
Filtrowanie:
ps aux | grep nginx
34. pgrep - znajdź PID po nazwie
pgrep nginx
Wynik:
1234
1238
-f
Przeszukuje pełną linię polecenia:
pgrep -f "python.*worker"
-l
Pokazuje nazwę:
pgrep -l nginx
35. kill i pkill
Normalne zakończenie:
kill 1234
Wysyła domyślnie SIGTERM.
Proces może się poprawnie zamknąć.
Wymuszone:
kill -9 1234
wysyła SIGKILL.
Proces zostaje natychmiast zabity.
Stosuj dopiero, gdy zwykłe kill nie działa.
Po nazwie:
pkill nginx
36. df - wolne miejsce na systemach plików
df -h
Przykład:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 40G 18G 20G 48% /
Najważniejsze:
Size- rozmiar,Used- zajęte,Avail- wolne,Use%- procent,Mounted on- punkt montowania.
To jedno z pierwszych poleceń przy dziwnym zachowaniu serwera.
37. du - ile miejsca zajmuje katalog?
du -sh /var/log
Przykład:
630M /var/log
-s
Podsumowanie.
-h
Czytelny rozmiar.
Sprawdzenie katalogów w bieżącym miejscu:
du -sh *
Posortowanie:
du -sh * | sort -h
38. mount - co jest zamontowane?
mount
Pokazuje systemy plików i punkty montowania.
Przydaje się przy:
- dyskach,
- pendrive'ach,
- ZFS,
- NFS,
- problemach z filesystemem.
39. lsblk - dyski w Debianie
lsblk
Przykład:
NAME SIZE TYPE MOUNTPOINTS
sda 500G disk
├─sda1 512M part /boot
└─sda2 499G part /
Dostajesz czytelny widok dysków i partycji.
FreeBSD nie ma standardowo lsblk.
42. Debian - ip
Adresy:
ip addr
skrót:
ip a
Pokazuje:
- interfejsy,
- adresy IPv4,
- IPv6,
- MAC,
- stan interfejsów.
Routing:
ip route
Przykład:
default via 192.168.1.1 dev enp3s0
192.168.1.0/24 dev enp3s0 proto kernel
Wiesz wtedy:
- jaka jest brama,
- którym interfejsem wychodzi ruch.
45. ping
ping 1.1.1.1
Testuje połączenie IP.
Jeśli działa:
ping google.com
testuje również DNS.
Typowa diagnostyka:
Jeśli:
ping 1.1.1.1
działa, ale:
ping google.com
nie działa, problem jest prawdopodobnie w DNS.
46. curl
Pobranie strony:
curl https://example.com
Pokazuje treść odpowiedzi.
Nagłówki:
curl -I https://example.com
Przykładowy wynik:
HTTP/2 200
content-type: text/html
server: nginx
Debugowanie:
curl -v https://example.com
Pobranie pliku:
curl -LO https://example.com/file.tar.gz
47. DNS - host i dig
host example.com
Pokazuje rozwiązany adres.
dig example.com
Pokazuje bardziej szczegółowe informacje DNS.
Tylko odpowiedź:
dig +short example.com
Przykład:
93.184.216.34
Debian:
sudo apt install dnsutils
FreeBSD:
pkg install bind-tools
48. Debian - ss
ss -tulpn
Pokazuje porty i procesy.
Przełączniki:
-t- TCP,-u- UDP,-l- nasłuchujące,-p- proces,-n- bez zamiany numerów na nazwy.
Przykład:
sudo ss -ltnp
Możesz dostać:
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
Wiesz wtedy:
- port 80 działa,
- nginx go obsługuje,
- PID procesu to 1234.
50. ssh
Połączenie:
ssh user@server
Przykład:
ssh user@192.168.1.100
Inny port
ssh -p 2222 user@server
Więcej diagnostyki
ssh -v user@server
Jeszcze więcej:
ssh -vvv user@server
Przydaje się przy problemach z kluczami i autoryzacją.
51. scp
Kopiowanie na serwer:
scp file.txt user@server:/tmp/
Pobranie:
scp user@server:/tmp/file.txt .
Rekurencyjnie:
scp -r project/ user@server:/srv/
52. ssh-keygen
Nowoczesny klucz:
ssh-keygen -t ed25519
Pytania:
- gdzie zapisać,
- czy ustawić hasło.
Typowo powstają:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
Prywatnego klucza nie udostępniasz.
53. chmod
Prawa dostępu:
ls -l
Przykład:
-rwxr-xr--
Znaczenie:
owner: rwx
group: r-x
others: r--
Dodaj wykonywanie
chmod +x script.sh
Tryb numeryczny
chmod 644 file.conf
oznacza:
owner: rw-
group: r--
others: r--
chmod 755 script.sh
oznacza:
owner: rwx
group: r-x
others: r-x
chmod 600 secret.txt
oznacza:
owner: rw-
group: ---
others: ---
54. chown
Zmiana właściciela:
sudo chown user:user file.txt
Rekurencyjnie:
sudo chown -R www-data:www-data /srv/www
Przydaje się przy:
- webserwerach,
- plikach tworzonych przez roota,
- wolumenach aplikacji,
- backupach.
55. Debian - apt
apt update
sudo apt update
Nie aktualizuje jeszcze programów.
Pobiera nowe informacje o pakietach z repozytoriów.
Po wykonaniu zobaczysz m.in.:
Hit:1 ...
Get:2 ...
Reading package lists... Done
oraz informację, ile pakietów można zaktualizować.
apt upgrade
sudo apt upgrade
Aktualizuje zainstalowane pakiety.
Przed wykonaniem pokaże listę zmian i zapyta:
Do you want to continue? [Y/n]
Typowa aktualizacja
sudo apt update
sudo apt upgrade
apt full-upgrade
sudo apt full-upgrade
Może również:
- doinstalować zależności,
- usunąć pakiety,
- wykonać bardziej złożone zmiany.
Instalacja
sudo apt install nginx
Usuwanie
sudo apt remove nginx
Zostawia część konfiguracji.
Purge
sudo apt purge nginx
Usuwa również konfigurację pakietu zarządzaną przez system pakietów.
Autoremove
sudo apt autoremove
Usuwa zależności, które nie są już potrzebne.
Szukanie
apt search nginx
Informacje
apt show nginx
56. Debian - dpkg
Czy pakiet jest zainstalowany:
dpkg -l nginx
Do jakiego pakietu należy plik:
dpkg -S /usr/bin/curl
Lista plików pakietu:
dpkg -L nginx
58. Debian - systemd i systemctl
Status:
systemctl status nginx
Dostaniesz:
- czy usługa działa,
- PID,
- czas działania,
- kilka ostatnich logów,
- informację o błędzie.
Start:
sudo systemctl start nginx
Stop:
sudo systemctl stop nginx
Restart:
sudo systemctl restart nginx
Reload:
sudo systemctl reload nginx
Przeładowuje konfigurację, jeśli usługa to wspiera.
Autostart:
sudo systemctl enable nginx
Wyłączenie autostartu:
sudo systemctl disable nginx
Od razu start + autostart:
sudo systemctl enable --now nginx
Usługi z błędami:
systemctl --failed
59. Debian - journalctl
Cały journal:
journalctl
Ostatnie 100 wpisów:
journalctl -n 100
Na żywo:
journalctl -f
Konkretna usługa:
journalctl -u nginx
Ostatnie 100:
journalctl -u nginx -n 100
Na żywo:
journalctl -u nginx -f
Od ostatniego bootu:
journalctl -b
Tylko błędy:
journalctl -p err
Kernel:
journalctl -k
Bardzo użyteczne:
sudo journalctl -xe
65. Debian - NetworkManager
Sprawdzenie:
nmcli
Urządzenia:
nmcli device
Połączenia:
nmcli connection
Aktywne:
nmcli connection show --active
Szczegóły:
nmcli connection show "Wired connection 1"
66. dmesg
dmesg
Pokazuje komunikaty kernela.
Przydatne przy:
- sprzęcie,
- USB,
- dyskach,
- kartach sieciowych,
- błędach sterowników.
Ostatnie wpisy:
dmesg | tail -n 50
67. lscpu, lspci, lsusb - Debian
CPU:
lscpu
PCI:
lspci
USB:
lsusb
Bardzo przydatne przy sprawdzaniu sprzętu.
69. date
date
Pokazuje aktualny czas systemowy.
Formatowanie:
date "+%Y-%m-%d %H:%M:%S"
Wynik:
2026-09-19 07:45:00
70. history
history
Pokazuje wcześniejsze polecenia.
Ponowne wykonanie ostatniego:
!!
Przykład:
apt update
dostajesz błąd braku uprawnień.
Możesz wpisać:
sudo !!
czyli:
sudo apt update
71. Ctrl+R
Interaktywne szukanie w historii.
Wciśnij:
Ctrl+R
i wpisz fragment:
ssh
Shell znajdzie poprzednie polecenie zawierające ssh.
To jedna z najbardziej użytecznych funkcji terminala.
72. Skróty klawiaturowe
Ctrl+C przerwij polecenie
Ctrl+D EOF / wylogowanie
Ctrl+L wyczyść ekran
Ctrl+R historia
Ctrl+A początek linii
Ctrl+E koniec linii
Ctrl+U usuń do początku
Ctrl+K usuń do końca
Tab autouzupełnienie
73. &&, ||, ;
&&
Drugie polecenie wykona się tylko, jeśli pierwsze zakończy się sukcesem.
make && ./app
||
Drugie wykona się tylko, jeśli pierwsze się nie powiedzie.
ping -c 1 server || echo "Brak połączenia"
;
Wykonuje oba niezależnie:
date ; uptime
74. Procesy w tle
command &
Przykład:
sleep 300 &
Shell od razu wraca do prompta.
Lista:
jobs
Na pierwszy plan:
fg
Zatrzymanie bieżącego procesu:
Ctrl+Z
Wznowienie w tle:
bg
75. tmux
Instalacja Debian:
sudo apt install tmux
FreeBSD:
pkg install tmux
Start:
tmux
Odłączenie:
Ctrl+B
D
Lista:
tmux ls
Powrót:
tmux attach
Przydatne do pracy przez SSH.
76. Archiwa tar
Pakowanie:
tar -czf backup.tar.gz project/
Znaczenie:
-c- create,-z- gzip,-f- plik wynikowy.
Rozpakowanie:
tar -xzf backup.tar.gz
-x- extract.
Podejrzenie zawartości:
tar -tzf backup.tar.gz
77. gzip, gunzip
Kompresja:
gzip file.log
Powstanie:
file.log.gz
Rozpakowanie:
gunzip file.log.gz
78. crontab
Edycja:
crontab -e
Lista:
crontab -l
Format:
min godz dzień_mies miesiąc dzień_tyg polecenie
Codziennie o 07:30:
30 7 * * * /home/user/script.sh
Co 10 minut:
*/10 * * * * /home/user/check.sh
81. Szybka diagnostyka Debiana
uptime
df -h
free -h
ip a
ip route
systemctl --failed
journalctl -b -p err
Co z tego uzyskasz:
uptime- obciążenie i czas pracy,df -h- czy dysk nie jest pełny,free -h- RAM,ip a- adresy sieciowe,ip route- brama,systemctl --failed- uszkodzone usługi,journalctl -b -p err- błędy od bootu.
Przykłady z prawdziwego życia - Debian
1. Strona WWW przestała odpowiadać
Sprawdź usługę:
systemctl status nginx
Jeżeli jest failed, przeczytaj log:
journalctl -u nginx -n 100
Sprawdź port 80:
sudo ss -ltnp | grep ':80'
Sprawdź odpowiedź lokalnie:
curl -I http://127.0.0.1
Jeżeli lokalny curl zwraca 200, webserver działa i należy szukać dalej w firewallu, reverse proxy albo DNS.
2. Dysk jest prawie pełny
df -h
Znajdź największe katalogi:
sudo du -sh /var/* | sort -h
Jeżeli duży jest /var/log:
sudo du -sh /var/log/* | sort -h
Duże pojedyncze pliki:
sudo find /var -type f -size +500M
3. Nie pamiętasz, gdzie jest konfiguracja
sudo find /etc -name "nginx.conf"
albo tekst w konfiguracjach:
sudo grep -Rni "server_name" /etc/nginx/
4. Kto używa portu 8080?
sudo ss -ltnp | grep ':8080'
Dostaniesz nazwę programu i PID procesu.
5. Sieć nie działa
Sprawdź adres:
ip a
Trasę domyślną:
ip route
Internet po IP:
ping 1.1.1.1
DNS:
ping debian.org
dig debian.org
Jeżeli IP działa, a nazwa nie, problem zwykle dotyczy DNS.
6. Bezpieczna zmiana konfiguracji SSH
Najpierw kopia:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Edycja:
sudo vi /etc/ssh/sshd_config
Sprawdzenie konfiguracji:
sudo sshd -t
Jeśli polecenie nic nie wypisze, konfiguracja jest poprawna składniowo.
Przeładuj usługę:
sudo systemctl reload ssh
Nie zamykaj starej sesji SSH, dopóki nie sprawdzisz nowego połączenia.
7. Aplikacja zjada CPU
top
Potem szczegóły procesu:
ps -p 8421 -f
Normalne zakończenie:
kill 8421
Dopiero gdy nie reaguje:
kill -9 8421
8. Chcesz oglądać log podczas testowania aplikacji
journalctl -u myapp -f
W drugim terminalu wykonujesz test i natychmiast widzisz nowe wpisy.
9. Szybko rozpoznajesz obcy serwer
hostname
cat /etc/os-release
uname -r
uptime
df -h
free -h
ip a
W minutę poznasz system, kernel, uptime, przestrzeń, RAM i adresy.
10. Aktualizacja Debiana
sudo apt update
sudo apt upgrade
Potem:
systemctl --failed
i ewentualnie:
sudo reboot
jeżeli aktualizacja wymaga restartu.
11. Długi proces przez SSH
tmux
Uruchom pracę:
./long-job.sh
Odłącz sesję Ctrl+B, potem D.
Po ponownym logowaniu:
tmux attach
12. Backup konfiguracji systemowej
sudo tar -czf /tmp/etc-backup-$(date +%F).tar.gz /etc
Sprawdzenie pliku:
ls -lh /tmp/etc-backup-*.tar.gz
Podejrzenie zawartości:
tar -tzf /tmp/etc-backup-$(date +%F).tar.gz | less
Debian - minimalny zestaw do pamięci
pwd
ls -lah
cd
cp
mv
rm
mkdir
less
tail
grep
find
man
ps aux
top
kill
df -h
du -sh
ip a
ip route
ping
curl
ssh
scp
sudo apt update
sudo apt upgrade
systemctl status
journalctl
ss -ltnp
Oficjalne źródła
- Debian Reference: https://www.debian.org/doc/manuals/debian-reference/
- Debian manpages: https://manpages.debian.org/
- Debian documentation: https://www.debian.org/doc/