FreeBSD - shell
To kompendium dotyczy codziennej administracji FreeBSD z terminala. Dla wyboru i konfiguracji powłoki zobacz Shelle w FreeBSD - przegląd, a dla szerszej administracji FreeBSD jako serwer. Automatyzację opisuje Programowanie w shellu.
Samodzielne kompendium do codziennej pracy we FreeBSD z terminala lub przez SSH.
Cel: sprawnie poruszać się po systemie, pracować z plikami, procesami i siecią, aktualizować pakiety, obsługiwać system rc, czytać logi, korzystać z ZFS i diagnozować typowe awarie.
FreeBSD - administrator, system i katalogi
su
Na FreeBSD często korzysta się z:
su -
Po podaniu hasła roota otrzymujesz login shell administratora.
Powrót:
exit
Jeżeli chcesz korzystać z sudo, możesz go zainstalować:
pkg install sudo
Wersja FreeBSD
freebsd-version
Przykładowy wynik:
15.1-RELEASE
Kernel:
uname -r
Najważniejsze katalogi
/ korzeń systemu
/etc konfiguracja systemu bazowego
/usr/home typowa lokalizacja katalogów użytkowników
/root katalog roota
/var dane zmienne
/var/log logi
/tmp dane tymczasowe
/usr/local programy instalowane spoza systemu bazowego
/usr/local/bin dodatkowe programy użytkowe
/usr/local/sbin dodatkowe programy administracyjne
/usr/local/etc konfiguracje programów z pkg/ports
/dev urządzenia
/boot kernel i pliki startowe
Bardzo ważna praktyczna zasada: konfiguracji programu zainstalowanego przez pkg najpierw szukaj w /usr/local/etc, a nie w /etc.
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:
- FreeBSD może używać m.in.
sh,cshlubtcsh, zależnie od użytkownika i konfiguracji. - 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.
40. FreeBSD - dyski
geom disk list
Pokazuje wykryte dyski.
Możesz też użyć:
camcontrol devlist
dla urządzeń CAM/SATA/SAS.
41. ZFS
Jeśli używasz ZFS:
zpool status
Najważniejsza komenda.
Pokazuje:
- stan puli,
- błędy,
- mirror/RAIDZ,
- uszkodzone urządzenia.
zpool list
Pokazuje pule i zajętość.
zfs list
Pokazuje datasety i ich wykorzystanie.
43. FreeBSD - ifconfig
ifconfig
Pokazuje interfejsy sieciowe.
Typowy fragment:
em0: flags=...
inet 192.168.1.20 netmask 0xffffff00
Dostajesz:
- nazwę interfejsu,
- adres,
- MAC,
- stan.
44. Routing na FreeBSD
netstat -rn
Pokazuje tablicę routingu.
Szukaj linii:
default
To twoja domyślna brama.
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
49. FreeBSD - sockstat
sockstat -4 -6 -l
Pokazuje procesy nasłuchujące na IPv4 i IPv6.
Przykład:
USER COMMAND PID FD PROTO LOCAL ADDRESS
root nginx 1234 6 tcp4 *:80
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.
57. FreeBSD - pkg
Aktualizacja katalogu
pkg update
Pobiera aktualne informacje o pakietach.
Aktualizacja pakietów
pkg upgrade
Pokazuje, co zostanie:
- zaktualizowane,
- zainstalowane,
- usunięte.
Instalacja
pkg install nginx
Usuwanie
pkg delete nginx
Szukanie
pkg search nginx
Informacje
pkg info nginx
Wszystkie zainstalowane
pkg info
Zbędne zależności
pkg autoremove
Do jakiego pakietu należy plik
pkg which /usr/local/bin/curl
60. FreeBSD - usługi service
Status:
service nginx status
Start:
service nginx start
Stop:
service nginx stop
Restart:
service nginx restart
Lista aktywnych usług:
service -e
61. FreeBSD - sysrc
FreeBSD zapisuje wiele ustawień startowych w:
/etc/rc.conf
Zamiast edytować ręcznie możesz użyć:
sysrc nginx_enable="YES"
Dostaniesz np.:
nginx_enable: -> YES
Sprawdzenie:
sysrc nginx_enable
Wyłączenie:
sysrc nginx_enable="NO"
Usunięcie wpisu:
sysrc -x nginx_enable
62. FreeBSD - logi
Typowy katalog:
/var/log
Zobacz:
ls -lah /var/log
Najczęściej ważne:
/var/log/messages
/var/log/security
/var/log/auth.log
Przykład:
tail -n 100 /var/log/messages
Na żywo:
tail -f /var/log/messages
63. FreeBSD - system bazowy i pakiety
FreeBSD rozdziela:
- system bazowy,
- pakiety użytkowe.
Pakiety z pkg to np.:
nginx
vim
git
tmux
curl
System bazowy zawiera m.in.:
- kernel,
- podstawowe narzędzia,
/bin,/sbin,- część
/usr/bin, - część
/usr/sbin.
To ważna różnica względem Debiana.
64. FreeBSD - aktualizacja systemu bazowego
W zależności od sposobu instalacji system może używać klasycznego mechanizmu albo pkgbase.
Sprawdzenie:
pkg which /usr/bin/uname
Jeśli plik nie należy do pakietu:
/usr/bin/uname was not found in the database
najprawdopodobniej korzystasz z klasycznego systemu bazowego.
Klasyczne aktualizacje bezpieczeństwa:
freebsd-update fetch
freebsd-update install
Jeśli system używa pkgbase, aktualizacja systemu bazowego odbywa się przez odpowiednie repozytorium pakietów bazowych.
Przy zmianie głównej wersji FreeBSD zawsze sprawdź dokumentację konkretnego RELEASE.
66. dmesg
dmesg
Pokazuje komunikaty kernela.
Przydatne przy:
- sprzęcie,
- USB,
- dyskach,
- kartach sieciowych,
- błędach sterowników.
Ostatnie wpisy:
dmesg | tail -n 50
68. FreeBSD - sysctl
CPU:
sysctl hw.model
Liczba CPU:
sysctl hw.ncpu
RAM:
sysctl hw.physmem
sysctl służy również do odczytu i zmiany parametrów kernela.
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
82. Szybka diagnostyka FreeBSD
uptime
df -h
ifconfig
netstat -rn
service -e
tail -100 /var/log/messages
dmesg | tail -50
Co uzyskasz:
- obciążenie,
- zajętość dysków,
- adresy,
- routing,
- uruchomione usługi,
- ostatnie komunikaty systemowe,
- ostatnie komunikaty kernela.
Przykłady z prawdziwego życia - FreeBSD
1. Strona WWW przestała odpowiadać
Sprawdź usługę:
service nginx status
Sprawdź komunikaty:
tail -n 100 /var/log/messages
Sprawdź port:
sockstat -4 -6 -l | grep ':80'
Sprawdź serwer lokalnie:
curl -I http://127.0.0.1
2. Dysk jest prawie pełny
df -h
Największe katalogi:
du -sh /var/* | sort -h
Duże pliki:
find /var -type f -size +500M
Jeżeli używasz ZFS:
zpool list
zfs list
3. Kontrola stanu ZFS
Najpierw:
zpool status
Szukaj:
state: ONLINE
oraz zerowych wartości w kolumnach błędów.
Pojemność:
zpool list
Datasety:
zfs list
4. Nie pamiętasz, gdzie jest konfiguracja nginx
find /usr/local/etc -name "nginx.conf"
Typowa lokalizacja:
/usr/local/etc/nginx/nginx.conf
5. Kto używa portu 8080?
sockstat -4 -6 -l | grep ':8080'
Z wyniku poznasz użytkownika, program i PID.
6. Sieć nie działa
Interfejsy:
ifconfig
Routing:
netstat -rn
Internet po IP:
ping 1.1.1.1
DNS:
ping freebsd.org
dig freebsd.org
7. Instalujesz nginx od zera
pkg install nginx
Włącz autostart:
sysrc nginx_enable="YES"
Uruchom:
service nginx start
Sprawdź:
service nginx status
sockstat -l | grep ':80'
8. Zmieniłeś konfigurację i nginx nie chce wystartować
Sprawdź składnię:
nginx -t
Potem:
service nginx restart
Jeśli jest problem:
tail -n 100 /var/log/messages
9. Aplikacja zjada CPU
top
Szczegóły:
ps -p 8421 -f
Zakończenie:
kill 8421
Ostatecznie:
kill -9 8421
10. Szybkie rozpoznanie obcego serwera
hostname
freebsd-version
uname -r
uptime
df -h
ifconfig
netstat -rn
service -e
11. Aktualizacja pakietów
pkg update
pkg upgrade
Potem:
service -e
i sprawdzenie najważniejszych usług.
12. Aktualizacja klasycznego systemu bazowego
Jeżeli system korzysta z klasycznego mechanizmu:
freebsd-update fetch
freebsd-update install
Po aktualizacji sprawdź komunikaty i instrukcje narzędzia. Jeżeli potrzebny jest restart:
shutdown -r now
13. Długi proces przez SSH
pkg install tmux
tmux
Uruchom proces i odłącz Ctrl+B, D.
Powrót:
tmux attach
14. Backup konfiguracji
tar -czf /tmp/etc-backup-$(date +%F).tar.gz /etc /usr/local/etc
Dzięki temu zapisujesz konfigurację systemu bazowego i większości programów instalowanych z pakietów.
FreeBSD - 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
ifconfig
netstat -rn
ping
curl
ssh
scp
pkg update
pkg upgrade
service
sysrc
sockstat
zpool status
zfs list
tail -f /var/log/messages
Oficjalne źródła
- FreeBSD Handbook: https://docs.freebsd.org/en/books/handbook/
- FreeBSD manual pages: https://man.freebsd.org/
- FreeBSD release information: https://www.freebsd.org/releases/