Tech Handbook Null Yard

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, csh lub tcsh, zależnie od użytkownika i konfiguracji.
  • możesz też używać zsh, fish itd.

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/