Виведення у файл лінукс. Як зберегти у файл виведення консолі

Якщо висновок (графічну) консоль не дуже об'ємний, можна просто виділити мишкою шматок і вставити його в повідомлення клацанням середньої кнопки. В іншому випадку можна використовувати перенаправлення виведення у файл через "воронку", наприклад так:

Some_command parameters > logfile.txt

Щоб бачити результат виконання на екрані, і одночасно писати у файл, можна скористатися командою tee:

Some_command parameters | tee -a logfile.txt

Команда setterm -dump створює "зліпок" буфера поточної віртуальної консолі у вигляді простого текстового файлу з стандартним ім'ям - screen.dump. Як її аргумент можна використовувати номер консолі, для якої потрібно зробити дамп. А додавання опції -file ім'я_файлу перенаправить цей дамп у файл із вказаним ім'ям. Опція ж -append приєднає новий дамп до вже існуючого файлу - "за замовчуванням" screen.dump або іменованого -file .

Тобто. після використання команди, наприклад

Setterm -dump -file /root/screenlog

відповідно у файлі /root/screenlogбуде вміст однієї сторінки консолі.

Знайшов ще одне рішення для копіювання/вставки тексту у текстовій консолі без миші. Також можна копіювати текст із буфера прокручування (тобто все що на екрані і вище за екраном). Щоб краще розібратися, читайте про консольного менеджера вікон screen. Також може знадобитися збільшити розмір буфера прокручування.

1) Запускаємо screen

2) Натискаємо Enter. Всі. Ми знаходимося у нульовому вікні консолі.

3) Виконуємо необхідні команди, виведення яких потрібно скопіювати.

4) Ctrl+A, Ctrl+[ - ми у режимі копіювання. Ставимо курсор початку виділення, тиснемо прогалину, потім ставимо курсор наприкінці виділення, тиснемо пропуск. Текст скопійований у буфер.

5) Ctrl+A, з – ми створили нове 1-е вікно.

6) Ctrl+A, 1 – ми перейшли на 1-е вікно.

7) Відкриваємо будь-який (?) текстовий редактор (я пробував у mc), і тиснемо Ctrl+A, Ctrl+] - текст вставлений. Зберігаємо.

8) Ctrl+A, Ctrl+0 - повернутися назад у нульове вікно.

Як збільшити буфер зворотного прокручування?

Першим рішенням буде збільшити дефолтний (замовчальний) розмір буфера у вихідниках ядра та перекомпілювати його. Дозвольте припустити, що ви не схильні займатися цим, як і я, і пошукати засіб гнучкіше.

І такий засіб є, а називається воно framebuffer console , для стислості fbcon . Цей пристрій має файл документації fbcon.txt; якщо ви встановлювали документацію до ядра, він у вас є. Вишукуйте його десь у районі /usr/shareгілки (я не можу вказати точний шлях через різницю в дистрибутивах).

На цьому місці перепрошую: ми повинні зробити невеликий відступ і трохи поговорити про відеобуфер ( framebuffer ).

Відеобуфер - це буфер між дисплеєм та відеоадаптером. Його краса в тому, що їм можна маніпулювати: він дозволяє трюки, які не пройшли б, якби адаптер пов'язаний безпосередньо з дисплеєм.

Один з таких трюків пов'язаний із буфером прокручування; виявляється, ви можете "попросити" відеобуфер виділити більше пам'яті буферу прокручування. Досягається це через параметри завантаження ядра. Спочатку ви вимагаєте framebuffer(відеобуфер); Потім запитуєте більший буфер прокручування.

Нижченаведений приклад стосується GRUB, але може бути легко адаптований до LILO. У файлі налаштування GRUB - menu.lst- Знайдіть відповідну ядру рядок, а потім: Видаліть опцію vga=xxx , якщо така є. Додати опцію video=vesabf або те, що відповідає вашому "залізу". Додати опцію fbcon=scrollback:128 . Після цієї процедури рядок параметрів ядра повинен виглядати приблизно так:

Kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128

Постає питання, навіщо видаляти опцію vga = xxx ? Через можливі конфлікти з відео-опцією. На своєму ATI адаптері, я не можу змінити буфер прокручування, якщо vga=xxx є у списку. Можливо, у вашому випадку це не так. Якщо вищезазначені опції працюють - добре; але що, якщо ви хочете збільшити кількість рядків, або встановити дрібніший шрифт на екрані? Ви завжди робили це за допомогою опції vga = xxx - а вона і зникла. Не переживайте - те саме може бути досягнуто зміною параметрів fbcon, як описано у файлі fbcon.txt(але не описано у цій статті).

З опцією fbcon=scrollback:128 у мене буфер прокручування збільшився до 17 екранів (35 разів Shift+PgUp по поекрану). До речі, 128 – це кілобайт. Автор статті стверджує, що більше не можна встановити. Я й не куштував.

Можна заюзати script.

Script filename.log

коли всі потрібні команди виконані -

Все записано у filename.log

У FreeBSD є чудова утиліта watch, яка дозволяє моніторити термінали, але як виявилося, в Linux вона виконує зовсім інші функції = Варто погуглити на цю тему, чого-небудь знайдеться.

Коли ви працюєте в терміналі, весь висновок команд, природно, ви бачите у реальному часі прямо у вікні терміналу. Але бувають випадки коли висновок необхідно зберегти, щоб попрацювати з ним пізніше (проаналізувати його, порівняти, тощо). Так ось, працюючи в Bash у вас є можливість перенаправляти інформацію з вікна терміналу в текстовий файл. Розглянемо, як це робиться.

Варіант 1: тільки перенаправляємо виведення терміналу у файл

У цьому випадку весь результат роботи будь-якої команди буде записаний у текстовий файл без відображення його на екрані. Тобто ми в прямому розумінні перенаправимо інформацію з екрана до файлу. Для цього потрібно використовувати оператори > і >> і шлях до файлу який потрібно писати, в кінці виконуваної команди.

Оператор > збереже результат роботи команди у вказаний файл і, якщо в ньому вже буде якась інформація, перезапише її.

Оператор >> перенаправить виведення команди у файл, і якщо в ньому також буде інформація, нові дані будуть додані в кінець файлу.

Розглянемо з прикладу команди ls , яка відображає список файлів та папок у вказаній директорії. Давайте запишемо результат роботи у текстовий файл. Нам потрібно написати команду, поставити оператор та вказати шлях до файлу:

Ls > /home/ruslan/приклад

Тепер побачимо, чи все спрацювало. Для цього можна скористатися будь-яким текстовим редактором, який ви маєте. Також це можна зробити прямо в терміналі за допомогою команди cat:

Cat /home/ruslan/приклад

Все працює.

Пам'ятайте, що " > » перезапише всі дані, які були до цього у файлі, тому, якщо вам потрібно дописати щось у файл, використовуйте оператор « >> «

Припустимо, що після того, як ми перенаправили виведення команди ls у файл « приклад » ми вирішили дізнатися версію ядра системи і зберегти висновок в той же файл. Щоб дізнатися версію ядра, скористаємося командою uname та параметром -a потім говоримо Bash як і куди потрібно зберегти результат її виконання:

Uname -a >> /home/ruslan/приклад

Знову перевіримо результат:

Cat /home/ruslan/приклад

Як бачимо, у нас збереглися результати роботи та ls , і uname .

Варіант 2: перенаправляємо виведення у файл та відображаємо його на екрані

Не всім і не завжди зручно користуватись операторами > і >> , так як все ж таки краще коли хвилювання команд можна спостерігати в реальному часі у вікні терміналу. У такому разі ми можемо скористатися командою tee , яка відобразить виконання команд на екрані, і збереже його у файл. Синтаксис її такий:

Команда | tee /шлях/до/файлу

Цей варіант подібний до оператора > з попереднього пункту, тобто під час запису у файл, усі старі дані будуть видалені. Якщо вам потрібно дописати файл, в конструкцію потрібно додати параметр -a :

Команда | tee -a /шлях/до/файлу

Одна з найцікавіших та корисних тем для системних адміністраторів та нових користувачів, які тільки починають розбиратися у роботі з терміналом – це перенаправлення потоків введення виведення Linux. Ця особливість терміналу дозволяє перенаправляти виведення команд у файл, або вміст файлу на введення команди, об'єднувати команди разом і утворити конвеєри команд.

У цій статті ми розглянемо, як виконується перенаправлення потоків введення виводу в Linux, які оператори для цього використовуються, а також де все це можна застосовувати.

Усі команди, які ми виконуємо, повертають нам три види даних:

  • Результат виконання команди зазвичай текстові дані, які запросив користувач;
  • Повідомлення про помилки - інформують про процес виконання команди та виниклі непередбачені обставини;
  • Код повернення - число, яке дозволяє оцінити, чи правильно відпрацювала програма.

У Linux всі субстанції вважаються файлами, зокрема і потоки введення виведення linux - файли. У кожному дистрибутиві є три основних файли потоків, які можуть використовувати програми, вони визначаються оболонкою та ідентифікуються за номером дескриптора файлу:

  • STDIN або 0- цей файл пов'язаний з клавіатурою і більшість команд одержують дані для роботи звідси;
  • STDOUT або 1- це стандартний висновок, сюди програма надсилає всі результати своєї роботи. Він пов'язаний з екраном, або якщо бути точним, то терміналом, в якому виконується програма;
  • STDERR або 2- усі повідомлення про помилки виводяться у файл.

Перенаправлення введення/виведення дозволяє замінити один із цих файлів на свій. Наприклад, ви можете змусити програму читати дані з файлу у файловій системі, а не клавіатури, також можете виводити помилки у файл, а не на екран тощо. Все це робиться за допомогою символів "<" і ">" .

Перенаправити висновок у файл

Все дуже просто. Ви можете перенаправити виведення файлу за допомогою символу >. Наприклад, збережемо виведення команди top:

top -bn 5 > top.log

Опція -b змушує програму працювати в не інтерактивному пакетному режимі, а n - повторює операцію п'ять разів, щоб отримати інформацію про всі процеси. Тепер дивимося, що вийшло за допомогою cat:

Символ ">" перезаписує інформацію з файлу, якщо вже щось є. Для додавання даних у кінець використовуйте ">>" . Наприклад, перенаправити виведення у файл linux ще для top:

top -bn 5 >> top.log

За промовчанням для перенаправлення використовується дескриптор файлу стандартного виводу. Але ви можете вказати це очевидно. Ця команда дасть той самий результат:

top -bn 5 1>top.log

Перенаправити помилки у файл

Щоб перенаправити виведення помилок у файл, вам потрібно явно вказати дескриптор файлу, який збираєтеся перенаправляти. Для помилок це номер 2. Наприклад, при спробі отримання доступу до каталогу суперкористувача ls видасть помилку:

Ви можете перенаправити стандартний потік помилок у файл так:

ls -l /root/ 2> ls-error.log
$ cat ls-error.log

Щоб додати дані до кінця файлу, використовуйте той самий символ:

ls -l /root/ 2>>ls-error.log

Перенаправити стандартний висновок та помилки у файл

Ви також можете перенаправити весь висновок, помилки та стандартний потік виводу на один файл. Для цього є два способи. Перший з них, більш старий, полягає в тому, щоб передати обидва дескриптори:

ls -l /root/ >ls-error.log 2>&1

Спочатку буде відправлено виведення команди ls у файл ls-error.log за допомогою першого символу перенаправлення. Далі в той же файл будуть направлені всі помилки. Другий метод простіше:

ls -l /root/ &> ls-error.log

Також можна використовувати додавання замість перезапису:

ls -l /root/ &>> ls-error.log

Стандартне введення з файлу

Більшість програм, крім сервісів, одержують дані для своєї роботи через стандартне введення. За замовчуванням стандартне введення очікує даних від клавіатури. Але ви можете змусити програму читати дані із файлу за допомогою оператора "<" :

cat

Ви також можете одразу ж перенаправити виведення теж у файл. Наприклад, пересортуємо список:

sort sort.output

Таким чином, ми в одній команді перенаправляємо введення виводу linux.

Використання тунелів

Можна працювати не тільки з файлами, але й перенаправляти виведення однієї команди як введення іншої. Це дуже корисно до виконання складних операцій. Наприклад, виведемо п'ять нещодавно змінених файлів:

ls-lt | head -n 5

За допомогою утиліти xargs можна комбінувати команди таким чином, щоб стандартне введення передавалося в параметри. Наприклад, скопіюємо один файл у кілька папок:

echo test/tmp/| xargs -n 1 cp -v testfile.sh

Тут параметр -n 1 задає, що для однієї команди потрібно підставляти лише один параметр, а опція -v cp дозволяє виводити докладну інформацію про переміщення. Ще одна, корисна в таких випадках команда – це tee. Вона читає дані зі стандартного введення і записує стандартний висновок або файли. Наприклад:

echo "Тест роботи tee" | tee file1

У поєднанні з іншими командами, все це може використовуватися для створення складних інструкцій з декількох команд.

Висновки

У статті ми розглянули основи перенаправлення потоків введення виводу Linux. Тепер ви знаєте, як перенаправити висновок у файл linux або виведення з файлу. Це дуже просто та зручно. Якщо у вас залишилися питання, запитуйте у коментарях!

Хоча зазвичай, як було сказано, введення/виведення програми пов'язані зі стандартними потоками, в оболонці існують спеціальні засоби для перенаправлення введення/виведення.

5.5.1 Оператори >,< и >>

Для позначення перенаправлення використовуються символи " > ", "< "і" >> Найчастіше використовується перенаправлення виведення команди у файл. Ось відповідний приклад:

$ ls -l > /home/jim/dir.txt

За цією командою у файлі /home/jim/dir.txt буде збережено перелік файлів та підкаталогів того каталогу, який був поточним на момент виконання команди ls; при цьому якщо зазначеного файлу не існувало, він буде створений; якщо він існував, то буде перезаписано; якщо ж ви хочете, щоб виведення команди було дописано в кінець існуючого файлу, треба замість символу > використовувати >> . При цьому наявність пробілів до або після символів > або >> несуттєво і служить лише зручності користувача.

Ви можете направити висновок не лише у файл, а й на вхід іншої команди або пристрою (наприклад, принтер). Так, для підрахунку числа слів у файлі /home/jim/report.txt можна використати таку команду:

$ cat /home/jim/report.txt > wc -w

а для виведення файлу на друк - команду:

$ cat /home/jim/report.txt > lpr

Як бачите, оператор > служить для перенаправлення вихідного потоку. По відношенню до вхідного потоку аналогічну функцію виконує оператор < . Наведений вище приклад команди для підрахунку числа слів у певному файлі можна переписати так (зверніть увагу на відсутність команди cat):

$ wc -w< /home/jim/report.txt

Цей варіант перенаправлення часто використовується в різних скриптах, стосовно тих команд, які зазвичай сприймають введення (або очікують введення) з клавіатури. У скрипті, що автоматизує якісь рутинні операції, можна дати команді необхідну інформацію з файлу, в який заздалегідь записано те, що потрібно ввести для виконання цієї команди.

Через те, що символи < , > і >> діють на стандартні потоки, їх можна використовувати не тільки тим звичним чином, як це робиться зазвичай, а й дещо по-іншому. Так, наступні команди еквівалентні:

$ cat > file

$cat>file

$ >file cat

$ > file cat

Однак сам по собі (без будь-якої команди, для якої визначено стандартні потоки) символ перенаправлення не може використовуватися, так що не можна, наприклад, ввівши в командному рядку

$file1 > file2

отримати копію якогось файлу. Але це не зменшує значення цього механізму, адже стандартні потоки визначені для будь-якої команди. У цьому перенаправити можна як стандартне введення і виведення, а й інші потоки. Для цього треба вказати номер перенаправленого потоку перед символом перенаправлення. Стандартне введення stdin має номер 0, стандартне виведення stdout — номер 1, стандартний потік повідомлень про помилки stderr — номер 2. Тобто повний формат команди перенаправлення має вигляд (нагадаємо, що пробіли біля > не обов'язкові):

command N > M

де Nі M- Номери стандартних потоків (0,1,2) або імена файлів. Вживання у деяких випадках символів < , > і >> без вказівки номера каналу або імені файлу можливо лише тому, що замість відсутнього номера за замовчуванням підставляється 1, тобто стандартний висновок. Так, оператор > без зазначення номера інтерпретується як 1 > .

Крім простого перенаправлення стандартних потоків, існує ще можливість не просто перенаправити потік у той чи інший канал, а зробити копію вмісту стандартного потоку. Для цього є спеціальний символ & , який ставиться перед номером каналу, на який перенаправляється потік:

command N > &M

Така команда означає, що вихід каналу з номером Nспрямовується як на стандартний висновок, так і дублюється в канал із номером M. Наприклад, щоб повідомлення про помилки дублювалися на стандартний висновок, треба дати команду 2>&1, в той час як 1>&2 дублює stdout у stderr. Така можливість особливо корисна при перенаправленні виведення на файл, оскільки ми тоді одночасно бачимо повідомлення на екрані, і зберігаємо їх у файлі.

5.5.2 Оператор |

Особливим варіантом перенаправлення виведення є організація програмного каналу (іноді називає трубопроводом чи конвеєром). Для цього дві або кілька команд, таких, що виведення попередньої служить введенням для наступної, з'єднуються (або поділяються, якщо вам це більше подобається) символом вертикальної межі - "|". При цьому стандартний вихідний потік команди, розташованої зліва від символу | , спрямовується на стандартне введення програми, розташованої праворуч від символу | . Наприклад:

$cat myfile | grep Linux | wc -l

Цей рядок означає, що виведення команди cat, тобто текст із файлу myfile, буде спрямований на вхід команди grep, яка виділить лише рядки, що містять слово "Linux". Виведення команди grepбуде, у свою чергу, спрямований на вхід команди wc -l, яка підрахує кількість таких рядків.

Програмні канали використовуються для того, щоб скомбінувати декілька маленьких програм, кожна з яких виконує лише певні перетворення над своїм вхідним потоком, для створення узагальненої команди, результатом якої буде якесь складніше перетворення.

Слід зазначити, що оболонка одночасно викликає виконання всі команди, включені в конвеєр, запускаючи кожної з команд окремий екземпляр оболонки, отже як перша програма починає щось видавати у свій вихідний потік, наступна команда починає його обробляти. Так само кожна наступна команда виконує свою операцію, чекаючи даних від попередньої команди і видаючи свої результати на вхід наступної. Якщо ви бажаєте, щоб якась команда повністю завершилася до початку виконання наступної, ви можете використовувати в одному рядку як символ конвеєра | , так і крапку з комою ; . Перед кожною точкою з комою оболонка зупинятиметься і чекатиме, поки завершиться виконання всіх попередніх команд, включених до конвеєра.

Статус виходу (логічне значення, що повертається після завершення роботи програми) з каналу, збігається зі статусом виходу, що повертається останньою командою конвеєра. Перед першою командою конвеєра можна встановити символ "!", тоді статус виходу з конвеєра буде логічним запереченням статусу виходу з останньої команди. Оболонка очікує завершення всіх команд конвеєра, перш ніж встановити значення, що повертається.

5.5.3 Фільтри

Останній із наведених вище прикладів (з командою grep) можна використовувати для ілюстрації ще одного важливого поняття, а саме програми-фільтра. Фільтри - це команди (або програми), які сприймають вхідний потік даних, роблять над ним деякі перетворення та видають результат на стандартний висновок (звідки його можна перенаправити ще кудись за бажанням користувача). До команд-фільтрів відносяться вже згадувані вище команди cat, more, less, wc, cmp, diff, і наступні команди.

Таблиця 5.1.Команди-фільтри

Команда

Короткий опис

grep, fgrep, egrep

Шукають у вхідному файлі або даних зі стандартного введення рядка, що містять вказаний шаблон, і видають їх на стандартний висновок

Замінює у вхідному потоці всі символи, що перебувають у заданому переліку, на відповідні символи з другого заданого переліку

comm

Порівнює два файли по рядках і видає на стандартний висновок 3 колонки: в одному - рядки, які зустрічаються тільки в 1 файлі, в другому - рядки, які зустрічаються тільки в 2-му файлі: і в третьому - рядки, що є в обох файлах

Форматує для друку текстовий файл або вміст стандартного введення

sed

Рядковий редактор, який використовується для виконання деяких перетворень над вхідним потоком даних (береться з файлу або зі стандартного введення)

Особливим фільтром є команда tee, Що "роздвоює" вхідний потік, з одного боку направляючи його на стандартний висновок, а з іншого - у файл (ім'я якого ви повинні задати). Легко бачити, що за своєю дією команда teeаналогічна оператору перенаправлення 1>&file.

Можливості фільтрів можна істотно розширити за рахунок використання регулярних виразів, що дозволяють організувати, наприклад, пошук за різними, часто дуже складними шаблонами.

Про перенаправлення та фільтри можна було б говорити дуже багато. Але цей матеріал є у більшості книг з UNIX і Linux, наприклад, у Петерсена [П1.4] і Келлі-Бутла [П1.8] . Тому обмежимося сказаним і перейдемо до розгляду так званого середовища або оточення, створюваного оболонкою.

В. Костромін (kos at rus-linux dot net) – 5.5. Перенаправлення вводу/виводу, канали та фільтри

Система введення/виводу в LINUX.

У системі вводу/виводу всі зовнішні пристрої розглядаються як файли, над якими допускається виконувати звичайні файлові операції. Звичайно, є і драйвери пристроїв, але інтерфейс з ними оформлений для користувача як звернення до спеціального файлу. Спеціальні файли є засобом уніфікації системи вводу/виводу.

Кожному підключеному пристрою (терміналу, дискам, принтеру тощо), відповідає, як мінімум, один спеціальний файл. Більшість цих спеціальних файлів зберігається у каталозі /dev:
$ cd /dev
$ls -l
onsole пульт управління системи
dsk порції на диску
fd0 флоппі-диск 1
mem пам'ять
lр принтер
lр0 паралельний порт 0
. . .
root порція на диску для кореневої файлової системи
swap своп-порція
syscon альтернативне ім'я пульта
systty ще одне ім'я для системної консолі
term директорія для терміналів
ttyS0 серійний порт 0 (COM1)
. . .

Коли програма виконує запис у такий спеціальний файл, то ОС система перехоплює їх і направляє пристрій, наприклад принтер). При читанні даних з такого типу файлу вони приймаються з пристрою, наприклад, з диска. Програма не повинна враховувати особливості роботи пристрою вводу/виводу. Для цього і служать спеціальні файли (драйвери), які виконують функції інтерфейсу між компонентами ядра ОС і прикладними програмами загального призначення.

Система виявляє відмінність звичайного файлу від спеціального лише після того, як буде проаналізовано відповідний індексний дескриптор, на який посилається запис у каталозі.
Індексний дескриптор спеціального файлу містить інформацію про клас пристрою, його тип та номер. Клас пристрою визначає пристрої з посимвольним обміном та поблочним обміном. Прикладом пристрою з посимвольним обміном може бути клавіатура. Спеціальні файли, що забезпечують зв'язок із пристроями такого типу, називають байт-орієнтованими. Для блокових пристроїв характерний обмін великими блоками інформації, це прискорює обмін і робить його ефективнішим. Усі дискові пристрої підтримують блоковий обмін, а спеціальні файли, які їх обслуговують, називають блок-орієнтованими. Спеціальні файли не містять символьної інформації, тому в лістингу каталогу їх довжина не вказується.

Тип і номер пристрою також є основними характеристиками спеціальних файлів (у полі довжини поміщаються головний і додатковий номери відповідного пристрою). Перший визначає тип пристрою, другий - ідентифікує його серед однотипних пристроїв. ОС може одночасно обслуговувати кілька десятків і навіть сотні терміналів. Кожен з них повинен мати свій власний спеціальний файл, тому наявність головного та додаткового номерів дозволяє встановити необхідну відповідність між пристроєм та таким файлом.

На одному диску можна створити декілька файлових систем. Деякі системи використовують по одній файловій системі на диску, інші - по кілька. Нову файлову систему можна створити за допомогою команди mkfs (make file system). Наприклад, вираз # /sbin/mkfs /dev/dsk/fl1 512 означає: створити на флоппі-диску b: розміром 512 блоків.

За бажанням можна задати розмір файлової системи в блоках та кількість i-вузлів (тобто максимальна кількість файлів, які можуть бути збережені у файловій системі). За замовчуванням число i-вузлів дорівнює кількості блоків, поділеному на чотири. Максимальна кількість i-вузлів в одній файловій системі 65 000. Якщо з деяких причин вам потрібно більше 65000 i-вузлів на диску, необхідно створити дві або більше файлових систем на цьому диску.

Будь-яка файлова система може бути прикріплена (монтована) до спільного дерева каталогів у будь-якій його точці. Наприклад, каталог / - це кореневий (root) каталог системи, крім цього, він є основою файлової системи, яка завжди вмонтована. Каталог /usr1 знаходиться в каталозі /, але в даному випадку є окремою файловою системою від кореневої файлової системи, тому що всі файли в ньому знаходяться на окремій частині диска або взагалі на окремому диску. Файлова система /usr1 - файлова система, що монтується, - корінь у точці, де каталог /usr1 існує в загальній ієрархії (рис. 1 і 2).

Мал. 1. Файлова система перед
монтуванням /dev/dsk/os1

Мал. 2. Файлова система після
монтування /dev/dsk/os1 як /usr/

Для встановлення файлової системи використовується команда /sbin/mount. Ця команда дозволяє розташувати цю файлову систему скрізь у існуючій структурі каталогів:
#/sbin/mount/dev/dsk/osl/usr1 монтує /dev/dsk/osl на /usr1
#/sbin/mount/dev/dsk/flt/а монтує /dev/dsk/flt на /а

Якщо потрібно монтувати файлову систему на диски, які мають бути захищені від запису, щоб система була доступна тільки для читання, необхідно додати опцію - r команді /sbin/mount.
Каталог, до якого прикріплюється файлова система, що вмонтовується, повинен бути в даний момент порожній, так як вміст його буде недоступно, поки файлова система монтується.

Щоб отримати інформацію про файлові системи, змонтовані, наприклад, на системі LINUX, можна використовувати команду /sbin/mount без аргументів (рис. 3).

Мал. 3.

Ця команда виводить каталог, на який було змонтовано файлову систему (наприклад, usrl), пристрій /dev, на якому вона знаходиться, годину і дату, коли вона була змонтована. Для демонтування файлової системи використовується команда /sbin/umount, яка має зворотну дію стосовно команди mount. Вона звільняє файлову систему і ніби виймає її повністю зі структури каталогів, так що всі її власні файли та каталоги стають недоступними:
# /sbin/umount /b
# /sbin/umount /dev/dsk/0s2

Коренева файлова система не може бути демонтована. Крім того, команда umount не буде виконана, якщо хтось використовує файл з тієї файлової системи, яку намагаються демонтувати (це може бути навіть просте перебування користувача в одному з каталогів файлової системи, що демонтується).

У командах mount та umount користувач використовує абревіатуру фізичних дискових пристроїв.
У LINUX дискові пристрої мають своєрідні позначення. У LINUX користувач ніколи не стикається з проблемою точної вказівки фізичного пристрою, на якому міститься інформація. У LINUX довільне число зовнішніх пристроїв може бути дуже великим, тому користувач має справу тільки з ім'ям каталогу, в якому знаходяться потрібні йому файли. Усі файлові системи монтуються один раз, як правило, під час завантаження системи. На деякі каталоги можуть бути змонтовані файлові системи з віддалених комп'ютерів.

Для фізичних пристроїв у LINUX існують директорії dsk та rdsk, які містять файли, що відповідають дисковим пристроям. Зазвичай імена файлів у цих директоріях однакові і єдина різниця між ними, що директорія rdsk містить дискові пристрої зі спеціальним доступом (raw), який використовують деякі пристрої системи для швидшого доступу до диска. Одна типова директорія dsk містить такі пристрої:
$ 1s /dev/dsk
0s0 1s0 c0t0d0s0 c0tld0s0 f0 f05q f13dt fld8d
0sl 1sl c0t0d0sl c0tld0sl f03d f05qt f13h fld8dt
0s2 1s2 c0t0d0s2 c0tld0s2 f03dt f0d8d f13ht fld8t
. . .
$

В системі LINUX дискові пристрої логічно розділені на секції, подібно до розділів, що визначаються в Partition Table MasterBoot MS DOS. Файли 0s1, 0s2, 0s3 і т. д., відповідають секціям першої, другої, третьої тощо диска з номером 0. Файли 1s0, 1sl, 1s2 і т. д. відповідають секціям першої, другої, третьої тощо. диска з номером 1. Якщо система має більше дисків, секції будуть пронумеровані ns0, nsl тощо для кожного диска з номером n.

Системи з великою кількістю дискових пристроїв використовують таку систему нумерації:
з controller d disk s section

де controller – номер контролера диска; disk – номер диска; section номер секції диска.
Так, 0s0 зазвичай еквівалентно c0t0d0s0, а 0sl - c0t0d0sl і трисимвольні імена секцій - це просто скорочення для дискового контролера з номером 0.

Файли, імена яких починаються з f визначають різні види гнучких дисків. Каталог rmt містить файли на пристроях типу магнітна стрічка:
$ 1s /dev/rmt
c0s0 cls0 c3s0 ntape ntapel tape tapel

Файли c0s0, cls0, c2s0 і c3s0 визначають чотири касетних стрічкових пристроїв, що запам'ятовують. Файли tape і tapel визначають магнітні пристрої з двома бобінами. Файли, чиї імена починаються з n, відносяться до тих самих пристроїв, тільки стрічка не перемотується після використання, в той час як використання інших файлів змушує стрічку перемотуватися, коли програма, що використовує її, закінчує роботу.

У деяких системах ці файли мають інші назви, проте всі вони завжди знаходяться в /dev і словник, який зазвичай приходить із системою, містить докладний опис пристроїв та пов'язаних із ними файлів.

Файлова система extX під час операцій введення/виводу використовує буферизацію даних. При зчитуванні блоку інформації ядро ​​видає запит операції введення/виводу кілька розташованих поруч блоків. Такі операції прискорюють вилучення даних при послідовному зчитуванні файлів. При занесенні даних файл файлова система extX, записуючи новий блок, заздалегідь розміщує поряд до 8 суміжних блоків. Такий метод дозволяє розміщувати файли у суміжних блоках, що прискорює їх читання та дає можливість досягти високої продуктивності системи.

mob_info