Rozglądanie się w wierszu poleceń
Moduł 1: Pierwszy serwer · Czas czytania: 11 min
Cel lekcji: Po tej lekcji będą Państwo potrafili poruszać się po serwerze Linux: przechodzić między katalogami, czytać i edytować pliki, sprawdzać, ile jest wolnego miejsca na dysku i pamięci, oraz samodzielnie szukać pomocy do polecenia.
Kluczowe pojęcia: shell, prompt, katalog i ścieżka, ścieżka bezwzględna i względna, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, uzupełnianie klawiszem Tab, uname, df, free, uptime, potok (pipe), grep
Shell i prompt
Po zalogowaniu rozmawiają Państwo z shellem: programem, który odczytuje i wykonuje Państwa polecenia. W Debianie i Ubuntu jest to zazwyczaj bash. Na lewo od kursora widać prompt (znak zachęty):
anna@web1:~$
root@web1:~#Informuje on o trzech rzeczach: kim Państwo są (anna lub root), na jakim serwerze (web1) i w jakim katalogu się znajdują (~ to Państwa katalog domowy). Ostatni znak jest ważny: $ oznacza zwykłego użytkownika, # oznacza roota. Jeśli widzą Państwo #, każde polecenie wykonuje się ze wszystkimi uprawnieniami. Prosimy wtedy pisać spokojnie i uważnie.
Katalogi i ścieżki
Wszystko w Linuksie wisi na jednym drzewie, które zaczyna się od / (katalog główny, którego nie należy mylić z użytkownikiem root). Kilka katalogów będzie się w tym kursie stale pojawiać:
| Katalog | Co zawiera |
|---|---|
/etc | Konfiguracja: SSH (/etc/ssh), serwer WWW (/etc/nginx), użytkownicy (/etc/passwd) |
/var/log | Pliki logów (obok journala, lekcja 6.2) |
/var/lib | Dane programów, na przykład baz danych i Dockera |
/home | Katalogi domowe zwykłych użytkowników, takie jak /home/anna |
/root | Katalog domowy roota |
/usr | Zainstalowane programy i biblioteki |
/tmp | Pliki tymczasowe, katalog jest czyszczony |
/srv lub /var/www | Typowe miejsce na strony internetowe i usługi |
Ścieżka bezwzględna zaczyna się od /, na przykład /etc/ssh/sshd_config. Ścieżka względna zaczyna się tam, gdzie Państwo właśnie są: jeśli znajdują się Państwo w /etc, to ssh/sshd_config oznacza ten sam plik. .. to katalog nadrzędny, . to bieżący katalog.
anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli ssh_config ssh_config.d sshd_config sshd_config.d ssh_host_ed25519_key ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$cd bez żadnego argumentu przenosi Państwa z powrotem do katalogu domowego.
Przeglądanie plików
ls -l pokazuje więcej niż same nazwy:
anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root 399 Nov 2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root 91 Nov 2 14:20 ssh_host_ed25519_key.pubOd lewej do prawej: uprawnienia, liczba dowiązań, właściciel, grupa, rozmiar w bajtach, data i nazwa. Proszę zwrócić uwagę na różnicę: tajny klucz hosta (-rw-------) może czytać tylko root, publiczny (-rw-r--r--) każdy. W lekcji 3.1 nauczą się Państwo dokładnie odczytywać te uprawnienia. ls -la pokazuje także pliki ukryte: nazwy zaczynające się od kropki, takie jak .ssh.
Aby przeczytać zawartość:
cat bestand: cały plik naraz, wygodne przy krótkich plikach;less bestand: przewijanie strzałkami i spacją, wyszukiwanie przez/woord, wyjście przezq;head -n 20 bestanditail -n 20 bestand: pierwsze lub ostatnie wiersze;tail -fśledzi plik na bieżąco, gdy dochodzą nowe wiersze.
Edycja pliku w nano
Konfigurację zmienia się w edytorze tekstu. nano jest najprostszy:
root@web1:~# nano /etc/hostsNa dole widać skróty klawiszowe; ^ oznacza Ctrl. Zapisanie to Ctrl+O i Enter, wyjście Ctrl+X, wyszukiwanie Ctrl+W. Kto już pracuje z vim, może go używać; vim nie zawsze jest w pełni dostępny w minimalnej instalacji.
Trzy nawyki, które później oszczędzą wielu kłopotów:
- Najpierw proszę zrobić kopię:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Proszę przetestować konfigurację przed ponownym uruchomieniem usługi. Wiele programów ma do tego własne polecenie:
sshd -t,nginx -t(lekcje 2.2 i 7.2). - Proszę zmieniać jedną rzecz naraz, aby wiedzieć, co spowodowało błąd.
W jakim stanie jest Państwa serwer?
Kilka poleceń, z których korzysta się w każdej sytuacji:
anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
10:12:44 up 3 days, 2:10, 1 user, load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 3.1G 35G 9% /
anna@web1:~$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 412Mi 2.9Gi 1.0Mi 720Mi 3.4Gi
Swap: 0B 0B 0Buname -a: jakie jądro (kernel) jest uruchomione.uptime: jak długo serwer już działa oraz load average (średnie obciążenie) z 1, 5 i 15 minut. W przybliżeniu: obciążenie, które przez dłuższy czas przekracza liczbę rdzeni procesora, oznacza, że procesy czekają.df -h: wolne miejsce na dysku (-hoznacza "human readable", z G i M). Pełny dysk to jedna z najczęstszych przyczyn, dla których serwer "nagle" przestaje działać.free -h: pamięć. Proszę patrzeć na kolumnęavailable, niefree: Linux wykorzystuje wolną pamięć jako pamięć podręczną (buff/cache) i oddaje ją, gdy program jej potrzebuje.
A sieć, z lekcji 1.2: ip -brief address.
Szukanie pomocy
Nie trzeba pamiętać wszystkich opcji. Trzeba jednak wiedzieć, gdzie ich szukać:
man sshotwiera podręcznik (manual page) polecenia. Przewija się go jak wless, wyszukuje przez/.man sshd_configopisuje każde ustawienie, które można wpisać w tym pliku.ls --helpwyświetla w przypadku większości poleceń krótką listę opcji.- Klawisz Tab uzupełnia nazwy poleceń i plików. Dwukrotne naciśnięcie Tab pokazuje możliwe opcje. To pozwala uniknąć literówek w długich ścieżkach.
- Strzałka w górę przywołuje wcześniejsze polecenia;
historypokazuje je wszystkie.
W minimalnej instalacji podręczników czasem brakuje. W Debianie i Ubuntu instaluje się je poleceniem apt install man-db (moduł 4).
Potoki i grep
Polecenia można łączyć za pomocą potoku (pipe, |): wyjście jednego staje się wejściem następnego. grep filtruje wiersze zawierające dane słowo:
anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | lessWiersze zaczynające się od # to komentarze: nic nie robią i często pokazują wartość domyślną. W lekcji 2.2 zobaczą Państwo, dlaczego w przypadku SSH może to być mylące.
Pułapki
- Wklejanie bez czytania. Polecenia z internetu robią dokładnie to, co jest w nich napisane, nawet jeśli różni się to od tego, co obiecuje tytuł artykułu. Prosimy przeczytać każde polecenie przed jego wykonaniem, zwłaszcza jako root.
rmnie ma kosza. Co usunięte, to usunięte. Prosimy zachować szczególną ostrożność przyrm -r(katalog z całą zawartością) i przy symbolach wieloznacznych, takich jak*.- Wielkość liter ma znaczenie.
/etc/SSHnie istnieje;/etc/sshowszem. - Spacje w ścieżkach trzeba ująć w cudzysłów:
cat "/srv/mijn site/index.html". Lepiej: na serwerze nie używać spacji w nazwach.
Podsumowanie
- Prompt mówi, kim Państwo są, na jakim serwerze i gdzie;
#oznacza roota. - Konfiguracja znajduje się w
/etc, logi w/var/log, dane programów w/var/lib, katalogi domowe w/home. - Do czytania służą
cat,less,headitail; edytuje się wnano, po zrobieniu kopii, a konfigurację testuje się przed ponownym uruchomieniem. df -h,free -h,uptimeiip -brief addresspokazują, w jakim stanie jest Państwa serwer.- Pomoc znajduje się w
mani--help; Tab uzupełnia; za pomocą|igrepfiltruje się wyjście.
Quiz
Zadanie
Zadanie O1.4: Poznanie serwera. Prosimy wykonać polecenia z lekcji na własnym serwerze i uzupełnić: dystrybucję i wersję, jądro, wolne miejsce na dysku, dostępną pamięć, obciążenie, IPv4 i IPv6 oraz to, które pliki w /etc/ssh może czytać tylko root. Następnie prosimy odpowiedzieć na dwa pytania dotyczące tego, co Państwo zobaczyli.
Zadanie O1.4: Poznanie serwera
To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.
available uwzględnia także pamięć podręczną, którą Linux zwalnia. Plik .pub to część publiczna, którą widzi każdy klient; plik bez .pub jest tajny (600, root), ponieważ ten, kto go ma, może podszyć się pod Państwa serwer.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Przeczytaj więcej
- Powiększenie przestrzeni dyskowej VPS
- Dostęp SSH oraz Terminal w DirectAdmin: w których pakietach są dostępne i jak się zalogować
- Debian Reference, rozdział 1 (podręcznik wiersza poleceń): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
