Модул 1 · 1.4
Ориентиране в командния ред
Модул 1: Вашият първи сървър · Време за четене: 11 минути
Цел на урока: След този урок ще можете да се ориентирате в Linux сървър: да се движите между директориите, да четете и редактирате файлове, да виждате колко свободно място на диска и памет има, както и сами да търсите помощ за дадена команда.
Основни понятия: shell, prompt, директория и път, абсолютен и относителен път, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, допълване с Tab, uname, df, free, uptime, pipe, grep
Shell и prompt
След като влезете, Вие общувате с shell: програмата, която чете и изпълнява Вашите команди. В Debian и Ubuntu това обикновено е bash. Вляво от курсора се намира prompt (подканата):
anna@web1:~$
root@web1:~#Тя Ви казва три неща: кой сте Вие (anna или root), на кой сървър се намирате (web1) и в коя директория сте (~ е Вашата собствена домашна директория). Последният знак е важен: $ означава обикновен потребител, # означава root. Ако виждате #, всяка команда се изпълнява с всички права. Затова пишете спокойно и внимателно.
Директории и пътища
Всичко в Linux е част от едно дърво, което започва от / (root директорията, да не се бърка с потребителя root). Някои директории ще срещате постоянно в този курс:
| Директория | Какво съдържа |
|---|---|
/etc | Конфигурация: SSH (/etc/ssh), уеб сървър (/etc/nginx), потребители (/etc/passwd) |
/var/log | Лог файлове (наред с journal, урок 6.2) |
/var/lib | Данни на програмите, например бази данни и Docker |
/home | Домашни директории на обикновените потребители, например /home/anna |
/root | Домашна директория на root |
/usr | Инсталирани програми и библиотеки |
/tmp | Временни файлове, които се почистват |
/srv или /var/www | Обичайното място за уебсайтове и услуги |
Абсолютният път започва от /, например /etc/ssh/sshd_config. Относителният път започва оттам, където се намирате в момента: ако сте в /etc, то ssh/sshd_config е същият файл. .. е директорията над текущата, . е текущата директория.
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 без нищо след него Ви връща в домашната Ви директория.
Преглед на файлове
ls -l показва повече от само имената:
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.pubОтляво надясно: правата, броят връзки, собственик, група, размер в байтове, дата и име. Обърнете внимание на разликата: тайният host key (-rw-------) може да се чете само от root, а публичният (-rw-r--r--) от всеки. В урок 3.1 ще се научите да разчитате тези права точно. ls -la показва и скритите файлове: имена, които започват с точка, като .ssh.
За да прочетете съдържанието:
cat bestand: целият файл наведнъж, удобно за кратки файлове;less bestand: прелистване със стрелките и интервал, търсене с/woord, изход сq;head -n 20 bestandиtail -n 20 bestand: първите или последните редове;tail -fпродължава да следи, когато се добавят нови редове.
Редактиране на файл с nano
Конфигурацията се променя в текстов редактор. nano е най-простият:
root@web1:~# nano /etc/hostsНай-долу са показани клавишните комбинации; ^ означава Ctrl. Запазването е Ctrl+O и Enter, изходът е Ctrl+X, търсенето е Ctrl+W. Ако вече работите с vim, можете да го използвате; при минимална инсталация vim не винаги е напълно наличен.
Три навика, които по-късно ще Ви спестят много неприятности:
- Първо направете копие:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Тествайте конфигурацията, преди да рестартирате услуга. Много програми имат собствена команда за това:
sshd -t,nginx -t(уроци 2.2 и 7.2). - Променяйте едно нещо наведнъж, за да знаете какво е причинило грешката.
В какво състояние е Вашият сървър?
Няколко команди, които ще използвате във всяка ситуация:
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: кой kernel работи.uptime: от колко време работи сървърът и load average за 1, 5 и 15 минути. Грубо казано: натоварване, което продължително е над броя на процесорните ядра, означава, че процесите чакат.df -h: свободно място на диска (-hозначава "human readable", с G и M). Пълният диск е една от най-честите причини сървърът да спре "ей така".free -h: памет. Гледайте колонатаavailable, а неfree: Linux използва свободната памет като cache (buff/cache) и я освобождава, когато дадена програма има нужда от нея.
И Вашата мрежа, от урок 1.2: ip -brief address.
Как да намерите помощ
Не е нужно да помните всички опции. Но трябва да знаете къде да ги намерите:
man sshотваря ръководството (manual page) на дадена команда. Прелиства се както приless, търси се с/.man sshd_configописва всяка настройка, която може да се зададе в този файл.ls --helpдава кратък списък с опциите при повечето команди.- Клавишът Tab допълва имената на команди и файлове. Двукратно натискане на Tab показва възможностите. Това спестява грешки при писане на дълги пътища.
- Стрелката нагоре връща предишни команди;
historyги показва всички.
При минимална инсталация понякога липсват ръководствата. В Debian и Ubuntu ги инсталирате с apt install man-db (модул 4).
Pipes и grep
Командите могат да се свързват с pipe (|): изходът на едната става вход за следващата. grep филтрира редовете, които съдържат дадена дума:
anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | lessРедовете, които започват с #, са коментари: те не правят нищо и често показват стойността по подразбиране. В урок 2.2 ще видите защо това може да е объркващо при SSH.
Капани
- Поставяне без четене. Командите от интернет правят точно това, което пише в тях, дори ако то е различно от обещаното в заглавието на статията. Прочетете всяка команда, преди да я изпълните, особено ако сте root.
rmняма кошче. Изтритото е изтрито. Бъдете особено внимателни сrm -r(директория с цялото ѝ съдържание) и със заместващи знаци като*.- Главните букви имат значение.
/etc/SSHне съществува;/etc/sshсъществува. - Интервалите в пътищата трябва да са в кавички:
cat "/srv/mijn site/index.html". По-добре: не използвайте интервали в имената на сървъра.
Обобщение
- Prompt Ви казва кой сте, на кой сървър и къде се намирате;
#означава root. - Конфигурацията е в
/etc, логовете в/var/log, данните на програмите в/var/lib, домашните директории в/home. - Четете с
cat,less,headиtail; редактирайте сnano, след като направите копие, и тествайте конфигурацията, преди да рестартирате. df -h,free -h,uptimeиip -brief addressпоказват в какво състояние е Вашият сървър.- Помощ ще намерите в
manи--help; Tab допълва; с|иgrepфилтрирате изхода.
Тест (quiz)
Задача
Задача O1.4: Опознаване на Вашия сървър. Изпълнете командите от урока на собствения си сървър и попълнете: дистрибуция и версия, kernel, свободно място на диска, налична памет, load, IPv4 и IPv6, както и кои файлове в /etc/ssh могат да се четат само от root. След това отговорете на два въпроса за това, което сте видели.
Задача O1.4: Опознаване на Вашия сървър
Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.
available включва и кеш паметта, която Linux освобождава. Файлът .pub е публичната част, която всеки клиент вижда; файлът без .pub е таен (600, root), защото който го притежава, може да се представя за Вашия сървър.
Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.
Още за четене
- Увеличаване на дисковото пространство на VPS
- SSH достъп и Терминалът в DirectAdmin: кои пакети и как да влезете
- Debian Reference, глава 1 (ръководство за командния ред): 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
