Professional Documents
Culture Documents
Лабораторні роботи - 2!
Лабораторні роботи - 2!
Знайомство з FreeBSD
Метою роботи є знайомство з роботою у FreeBSD та вивчення основних команд FreeBSD.
У файлі /etc/passwd знаходиться список користувачів, а також встановлені для них командні
інтерпретатори за промовчанням. Набравши команду cat /etc/passwd (не забуваємо про
автодоповнення), ви побачите цей файл на екрані. У самому верху Ви можете побачити користувача root
у якого стоїть /bin/сsh, а в самому низу - користувача зі своїм ім'ям, у якого стоїть /bin/sh. Ви також
можете побачити купу інших "користувачів" (службових облікових записів), у яких стоїть як оболонка
nologin. Це означає, що вони не можуть увійти до системи.
Рис. 23 - chsh
У вас запитають пароль для підтвердження того, що це саме Ви змінили свої параметри. Як
інтерпретатор можна використовувати будь-яку програму. Наприклад, задавши як інтерпретатор
/usr/bin/mail, єдиною доступною дією користувача буде читання пошти за допомогою програми mail.
У файлі /etc/passwd можна побачити, що Ваш інтерпретатор змінився.
Перевірте тепер, як змінилися Ваші налаштування. Наберіть exit (або Ctrl+d) для виходу із
запущеного bash і повернення в sh, а потім ще раз exit для того, щоб розлогінитися. Після наступної
автентифікації ви потрапите відразу до bash.
Каталог Призначення
/ Коренева файлова система (файлова система root). Це верхній
розділ у ієрархії UNIX. Всі інші розділи підпорядковані йому,
навіть якщо вони знаходяться на інших дисках або інших
комп'ютерах.
/bin Тут знаходяться файли, що виконуються, скомпіловані зі
статичними бібліотеками
/boot Тут знаходяться файли конфігурації завантажувача, ядро
операційної системи, модулі до ядра та інші файли, необхідні
для завантаження операційної системи.
/cdrom Порожній каталог призначений для монтування приводу
оптичних дисків.
/dev Спеціальний каталог Файли всередині є пристроями. Точніше
файлами спеціальних типів, які забезпечують програм
інтерфейс до пристроїв, що підтримуються ядром.
/etc Тут зберігаються системні конфігураційні файли.
/home Посилання на каталог /usr/home створене з міркувань
сумісності.
/lib Основні бібліотеки та модулі ядра
/libexec Основні бібліотеки та модулі ядра
/media Порожній каталог призначений для монтування стандартних
накопичувачів інформації.
/mnt Порожній каталог призначений для монтування.
/proc Файлова система процесів (procfs). Вона є інтерфейс до таблиці
процесів.
/rescue Резервний каталог з основними утилітами для відновлення
роботи системи
Каталог Призначення
/root Домашній каталог користувача root. Він розташований за
межами каталогу /usr/home з міркувань безпеки та, крім того,
доступний при аварійному завантаженні.
/sbin Системні файли, що виконуються, скомпіловані зі статичними
бібліотеками. Вони відрізняються від файлів, які зберігаються в
/bin, тим, що здатні змінити поведінку системи, тоді як
програми з /bin, являють собою лише утиліти користувача.
/sys Посилання на файли з вихідним кодом ядра. якщо вони були
встановлені.
/tmp Тимчасові файли. Даний каталог доступний для запису для всіх
користувачів.
/usr З цього каталогу починається "інша система".
/var Каталог. призначений для файлів, що змінюються.
/usr/bin Тут знаходиться додаткове програмне забезпечення, що є
частиною системи.
/usr/games Найважливіший каталог системи.
/usr/home Тут зберігаються домашні каталоги користувачів
/usr/home/ кожен користувач отримує у своє розпорядження каталог зі
ім'я_користувача своїм ім'ям.
/usr/include /usr/lib Тут є різні бібліотеки.
/usr/libdata /usr/libexec
/usr/local Тут знаходяться програми, які не є частиною операційної
системи.
Каталог Призначення
/usr/sbin Тут знаходиться додаткове програмне забезпечення,
призначене для адміністративних завдань.
/usr/share Тут є різноманітна документація, списки, довідники, словники
etc.
/usr/src Тут є вихідні коди FreeBSD.
/usr/local/bin Тут знаходиться прикладне програмне забезпечення, яке не є
частиною системи і встановлюється адміністратором.
/usr/local/etc Тут знаходяться файли налаштування цього ПЗ.
/usr/local/man Тут містяться файли довідки manual pages (man).
/usr/local/sbin Тут знаходиться встановлюване програмне забезпечення, яке
може впливати на стан операційної системи.
/usr/local/share Тут є різноманітна документація.
/usr/local/www Тут розміщуються файли для Web-сервера.
2.3 Файли
2.3.1 Операції з файлами та каталогами (створення, перегляд, видалення)
Для створення файлу є цікава команда touch (доторкнутися). Її мета змінити час останнього доступу до
існуючого файлу, але якщо файлу не існує, вона його створює. Для створення директорії є команда
mkdir. Вона, до речі, може створювати багаторівневу структуру. Наприклад, наберіть mkdir -p
folder1/folder2/folder3 у своєму домашньому каталозі і вона створить кілька вкладених один одного
каталогів. Для створення декількох файлів або декількох каталогів, потрібно набрати їх імена через
пробіл. Наприклад: touch file1 file2 file3 або mkdir folder2 folder3.
Копіювання файлів виконується за допомогою команди cp (copy). Можна копіювати файл до
нового файлу (cp file1 file2), файл до каталогу (cp file1 folder1), каталог до нового каталогу (cp folder1
folder2 — якщо folder2 не існує) та каталог до існуючого каталогу (cp folder1 folder2 — якщо folder2
існує).
Переміщення та перейменування здійснюється за допомогою команди mv (move). Нею можна
перемістити файл у каталог, каталог на існуючий каталог, перейменувати файл, каталог.
Видалення порожніх каталогів командою rmdir. Для видалення файлів використовується
команда rm.
Усі ці команди мають спільні опції. Опція -R (рекурсивно) змушує виконати дію як над
каталогом, а й над усім, що у ньому перебуває, включаючи підкаталоги. Наприклад, rm -R folder1
видаляє каталог з усіма підкаталогами. Опція -i вимагає підтвердження кожної дії. Її корисно
використати, коли Ви не впевнені у своїх діях. -f форсує події. rm -f буде видаляти все, що тільки можна
незважаючи на те, чи відкрити файл, є він тільки для читання і чи є до нього доступ. Опція -P є у
команди rm і тричі перезаписує місце на диску, де був файл, випадкової послідовністю символів. -W
намагається відновити файл віддалений командою rm, але через специфічний пристрій файлової
системи UNIX систем, віддалений файл, як правило, є втраченим назавжди. І, нарешті, опція -v виводить
інформацію про кожну дію на екран.
Як Ви можете помітити, всі команди виконуються мовчки та швидко, не ставлячи зайвих питань.
Вважається, що й користувач віддав команду, він знає, що робить. UNIX не веде своїх користувачів за
руку, навіть якщо це призведе до сумних наслідків. Якщо Ви не впевнені у своїх діях, то використовуйте
опцію -i, і в разі небезпеки система попросить підтвердження на виконання. Можна також
використовувати опцію -v (verbose) для інформативного режиму.
Таблиця 4: Символи-заступники
Квадратні дужки дозволяють визначити діапазон символів для пошуку збігу. Наприклад, file[1-3]
збігається із file1, file2, file3, але не з file4. Збіг можна вказати не лише для цифр, а й для літер.
Наприклад, file[a-c] збігається з filea, fileb, filec.
При роботі з символами важливо пам'ятати, що збіг базується на ASCII-коді символу.
Наприклад, file[A-b] збігається не тільки з fileA і fileb, але і з fileB, fileC і до fileZ.
Схожий формат використовується, коли потрібно вказати збіг з одним із символів зі списку.
Наприклад, file[1234]* збігається з іменами, які починаються з file1, file2, file3, file4 (далі можуть бути
будь-які символи).
Зі символами заступниками можна використовувати логічний оператор НЕ. Наприклад, file[!
1234]* збігається з іменами, які НЕ починаються з file1, file2, file3, file4.
Багато символів, які зустрічаються в іменах файлів (пробіл, ? , *, "), потрібно екранувати
символом зворотної риси. Будь-яке ім'я файлу так само можна взяти в лапки.
Для перегляду вмісту файлів існує багато програм: cat, less, more, head, tail. Скопіюйте кудись
собі файли з /usr/local/share/doc і з їх допомогою, а також за допомогою довідки man ознайомтеся з їх
роботою.
cat призначена для виведення вмісту файлу на пристрій виводу. За промовчанням ним є екран.
Якщо у списку файлів команди cat міститься кілька файлів, програма виведе їх один за одним. Якщо
файл великий, то має сенс вивести лише початок або кінець файлу командами head або tail, які без опцій
виводять лише 10 рядків з початку чи кінця відповідно. Додатковими опціями можна вказати бажану
кількість рядків для виведення цими командами.
Іноді необхідно вивести не весь файл, а певні рядки шаблону. Для цього застосовується
сімейство команд grep (grep, egrep, fgrep). Допустимо потрібно у файлі textfile знайти входження рядка
tom. для цього використовується grep у найпростішому форматі:
grep tom textfile
Ця команда виводить на екран кожний рядок текстового файлу, що містить підрядок tom. Це
означає, що критеріям пошуку задовольняють слова tomcat, atom, automatic. Щоб знайти саме слово,
необхідно оточити його пробілами і укласти в лапки:
2.3.3 Посилання
UNIX системи дають можливість створювати посилання певні точки файлової системи.
Посилання дозволяють уникнути введення довгих шляхів. Існує два види посилань: жорсткі (hard links)
та символічні (soft links).
Жорстке посилання, це елемент файлової системи, що вказує на той же індексний дескриптор
(фізична точка на жорсткому диску), що інший файл. Насправді існує лише один фізичний файл. Але
йому відповідають два або більше елементи каталогу, що вказують на ті самі дані на жорсткому диску.
Зрозуміло, що будь-який файл має хоча б одне жорстке посилання. Жорсткі посилання створюються
командою ln за промовчанням.
ln /home/user/folder1/folder2/folder3/folder4/file.txt home/user/file.txt
В результаті в домашньому каталозі створюється елемент під назвою file.txt, що вказує на ту
саму точку жорсткого диска, що і /home/user/folder1/folder2/folder3/folder4/file.txt. Тепер до файлу
можна звертатися, не використовуючи довгий шлях. Щоб подивитися стан посилання можна набрати ls -
l.
- rw - - - - - - - 2 user user 3456 Jan 31 16:54 file.txt
Цифра 2 вказує на те, що цей файл має 2 жорсткі посилання. Усі зміни, що вносяться до файлу
або його атрибути, впливають і на інший файл, який вказує на ті ж дані на жорсткому диску. Час
модифікації та розмір файлу для обох посилань збігаються. При видаленні файлу
/home/user/folder1/folder2/folder3/folder4/file.txt лічильник посилань зменшиться на одиницю, однак
сам файл на жорсткому диску залишиться, оскільки існують посилання на нього. Як тільки кількість
посилань стає рівною нулю, файл видаляється фізично.
Жорсткі посилання мають такі обмеження:
• їх не можна використовувати як посилання на каталоги,
• вони не можуть перетинати межі файлових систем. Тобто. не можна створити жорстке посилання
на файл /var/log.txt (слайс /var) у домашньому каталозі (слайс /usr).
Для обходу цих обмежень є символічні (м'які) посилання. З символічними посиланнями (soft links,
symbolic links, symlinks) ви могли познайомитись у Windows, де вони називаються ярликами. На відміну
від жорсткої, символічне посилання є окремим файлом, в якому міститься адреса на інший файл. Для
створення символічного посилання використовується опція -s:
ln -s /home/user/folder1/folder2/folder3/folder4/file.txt /home/user/file.txt
В результаті в домашньому каталозі створюється файл, який всі звернення до нього
перенаправляє до файлу /home/user/folder1/folder2/folder3/folder4/file.txt. Щоб подивитися стан
посилання можна набрати ls -l
lrw - - - - - - - 1 user user 15 Jan 31 16:54 file.txt -> /home/user/folder1/folder2/folder3/folder4/file.txt
Те, що це символічне посилання, нам повідомляє літера l на початку рядка. Після символів ->
вказується розташування файлу, на який посилається це посилання.
Основні відмінності символічного посилання від жорсткого:
• права доступу до посилання не відображають права доступу до файлу
• лічильник посилання дорівнює 1 (якщо ви не створили на неї жорстких посилань), що означає,
що посилання вказує на файл, а не область даних на жорсткому диску.
• розмір посилання дорівнює не розміру файлу, а кількості символів, з яких складається адреса, що
посилається на файл
• час останньої модифікації посилання не збігається з часом модифікації файлу. Він говорить лише
про те, коли було змінено посилання.
Якщо видалити файл, на який посилається м'яке посилання, дані знищуються фізично та
посилання стає недійсним.
Завжди рекомендується для посилань на файл у межах однієї файлової системи створювати
жорсткі посилання. Для посилань на файл в інший ФС або на папку використовувати символічні
посилання.
history
Ця програма показує історію введених команд. Оскільки список досить довгий, то можна,
наприклад, вивести лише 10 останніх команд із набравши history — tail або перенаправити виведення в
команду less для більш комфортного перегляду за допомогою history — less.
script
Ціль цієї програми - копіювання всього, що виводиться на екран у файл. Запустивши її, а після
закінчення роботи, перервавши виконання цієї програми за допомогою Ctrl+d, у вказаному файлі Ви
можете бачити все, що виводилося на екран під час вашої роботи.
date
Назва говорить сама за себе - виведення поточної дати у різних варіантах.
cal
Виведення різних календарів.
tar
Універсальна програма створення архівів. Вона має безліч опцій, які дозволяють робити будь-які
операції з архівованими даними. Для новачка розібратися у ній так само важко, як і в текстовому
редакторі vi. Тому ось коротенька шпаргалка, а решту Ви можете отримати з довідки man.
Створення архіву
tar czf им’я_архіву.tar.gz моя_важлива_папка
Перегляд списку файлів в архіві
tar tf им’я_архіву.tar.gz
Вилучення файлів з архіву
tar zxf им’я_архіву.tar.gz
Як бачите, легко здогадатися, що c означає створити (Create), x — витягти (eXtract), z —
використовувати стиск, а f — операції проводити з файлом замість магнітної стрічки, яка за умовчанням
використовувалася 50 років тому за створення tar.
finger
Показує повну інформацію про користувача (якщо користувач звичайно її заповнив). Це дуже
відома програма. Колись (років 30-40 тому) інформація, яку вона дає, можна було отримати з будь-якого
сервера. Але тепер, з міркувань безпеки, її заблоковано скрізь.
info
Довідкова служба на кшталт man, але зі своїм синтаксисом.
bc, dc
bc це простий калькулятор. Запустивши його з опціями -lq можна вводити довільні приклади
виду (2+2)*2. Натиснувши Enter, ми отримаємо результат. bc дуже функціональний і може вирішувати
завдання будь-якої складності, обчислювати різні математичні функції. Він має багато налаштувань і в
нього встрен свою мову програмування, за допомогою якого можна формувати завдання для
обчислення. dc — стіковий калькулятор, який використовує зворотний польський запис. Вам він
знадобиться лише якщо не вистачить функціоналу bc.
echo
Хоча сенс команди відразу не зрозумілий і здається абсурдним, але незабаром Ви зрозумієте, що
вона дуже корисна і потрібна. Ця команда просто виводить на екран рядок, який Ви їй передали. Завдяки
цьому можна перенаправити цей рядок на введення іншої програми. Наприклад:
echo 10+10 | bc
Поверне вам число 20.
fc
Корисна утилітка. Якщо ви набрали команду в три рядки з двадцятьма змінними та тридцятьма
опціями, то набравши fc Ви легко зможете її зберегти у файл. Зробивши файл виконуваним, Вам більше
не потрібно знову набирати, а варто тільки запустити файл. Як зробити файл виконуваним, ми
дізнаємось у наступних лабораторних роботах.
2.4.2 Утиліти адміністрування
dd Ця команда призначена для низького рівня копіювання. Призначена для випадків коли cp не
може допомогти. Наприклад
dd if=/dev/ad0 of=/media/floppy/bootsect.lnx bs=512 count=1
копіює перші 512 байт із вінчестера (тобто завантажувач системи) на дискету.
ps
Команда для виведення інформації про запущені процеси. При запуску без опцій показує лише
процеси, запущені Вами. Якщо набрати ps aux, то виведуть усі процеси, запущені всіма користувачами,
а так само з більш детальною інформацією, такою як завантаження процесора та зайнята пам'ять.
Прочитавши man ps Ви навчитеся розуміти виведення цієї програми та вибирати собі потрібні дані з її
виведення.
top
Виконує ті ж функції, що й ps, але є інтерактивною і дозволяє виводити інформацію про процеси
в реальному часі.
nice, renice
Утиліта призначена для підвищення або зниження пріоритету виконання завдання. Пріоритет
вказується в умовних одиницях від -20 (найвищий) до 19 (найнижчий). Не забувайте, що перед цією
опцією потрібно вказати знак мінус. Тому на екрані пріоритет має виглядати як від -20 до -19.
Наприклад, Вам потрібно заархівувати базу даних на сервері, але при цьому не допустити навантаження
на нього. Для цього потрібно перед командою архівації вказати пріоритет — так:
nice -10 tar опції_для_команди_архівування &
Знак & означає, що процес буде запущено у фоновому режимі та дасть вам можливість
продовжити роботу з командним рядком. Якщо робочий день закінчився і сервер не використовується
так активно, а архівація ще триває, можна на ніч поставити збільшення пріоритету. Для цього за
допомогою команди ps потрібно дізнатися про PID процесу і збільшити його пріоритет:
renice - -10 -p pid_процесу
Врахуйте, що переведення процесу у найвищий пріоритет переводить цей процес практично у
режим реального часу (realtime mode). Після цього всі ресурси обчислювальної системи будуть кинуті з
його виконання і система відмовиться відповідати навіть команди з клавіатури.
Команду nice можна застосовувати як для процесів, але й груп і окремих користувачів.
kill, killall
Утиліти, які допомагають вбити процес, надіславши їм сигнал переривання. Сигнали
переривання можуть бути такими:
Якщо якась програма зависла, то, дізнавшись попередньо PID, можна за допомогою kill надіслати їй
сигнал завершення TERM:
kill -15 33446
Якщо вона не відповідає, використовуйте сигнал KILL:
kill -9 33446
killall допомагає завершити всі процеси, запущені певною командою. Наприклад, killall tar
скасує всі запущені процеси архівації. Врахуйте, що сигнал 9 KILL дуже грубий. Якщо Ви перервете
архівацію таким способом, то на диску залишаться шматки файлів, в які йшов запис. Намагайтеся
завершувати програми коректно за допомогою сигналу 3 QUIT або 15 TERM.
uname
Ця утиліта показує різноманітну інформацію про систему. У довідковій службі man, Вам
розкажуть про те, як дізнатися тип процесора, встановлену операційну систему, архітектуру комп'ютера
та багато іншого, що знає ця утилітка.
uptime
Виводить час роботи системи та середню завантаженість за останні 1, 5 та 15 хвилин.
w, who, users
Ці команди виводять різну інформацію про користувачів, які зараз працюють у системі.
ac
Выводит информацию о продолжительности работы пользователей в системе. Как по дням — ac
-d имя_пользователя так и по пользователям вообще — ac -p.
Виводить інформацію про тривалість роботи користувачів у системі. Як по днях - ac -d
ім'я_користувача так і по користувачам взагалі - ac -p.
last
last виводить повнішу інформацію. Хто колись підключився і з якого терміналу, скільки часу
пропрацював і хтось вимикав систему.
2.4.3 alias’и
Аліаси (або псевдоніми) – це підстановка замість однієї команди іншою. Часто їх
використовують для того, щоб уникнути введення великої кількості опцій. Подивившись історію команд
командою history Ви можете замінити найчастіше використовувані команди їх псевдонімами.
Наприклад ввівши
alias ll="ls -lh"
по команді ll буде виводитися повний перелік файлів як і за команди ls -lh. Ввівши
alias ..="cd .."
Переміщуватись на рівень вище у файловій системі можна буде, набравши дві точки.
Псевдоніми також можна використовувати для безпеки
alias rm="rm -i"
Тепер при видаленні файлів у Вас завжди будуть запитувати підтвердження.
Псевдоніми працюють лише до кінця сесії. Щоб зробити їх постійно діючими, їх необхідно
внести в конфігураційний файл оболонки. Як це зробити, ми дізнаємось пізніше.
1Програма script веде протокол лише потокової інформації, яка виводиться термінал. Інтерактивні
програми, такі як редактор vi або утиліта top, не можуть бути запротоколовані.