Системное программное обеспечение

1.

СИСТЕМНОЕ
ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ

2.

ТЕОРЕТИЧЕСКОЕ
ЗАНЯТИЕ

3.

Одновременный доступ к системе
■ Характерный для современных версий UNIX
способ организации параллельной работы
пользователей – виртуальные консоли.
■ Виртуальные консоли – это несколько
параллельно выполняемых операционной
системой программ, предоставляющих
пользователю возможность
зарегистрироваться в системе в текстовом
режиме и получить доступ к командной
строке

4.

Виртуальные консоли
■ Переключение между виртуальными консолями в текстовом режиме: Alt-F1, AltF2 и т.п.
■ Каждая виртуальная консоль обозначается специальным именем: «tty1», «tty2» и
т.д..
■ Виртуальные консоли обозначаются «ttyN», где «N» – номер виртуальной консоли.
■ Каждая из таких консолей связана с собственным терминалом, который
характеризуется файлом устройства с соответствующим именем (например,
/dev/tty1)

5.

Графический терминал
Графический терминал – специальная программа, которая эмулирует текстовый
терминал в графическом окне.
Существует возможность запуска нескольких графических подсистем.
Переключение между ними будет осуществляться аналогично переключению между
виртуальными консолями – комбинацией клавиш Ctrl-Alt-F1.

6.

Процесс выполнения команды
Командная оболочка – это обычный процесс в операционной системе UNIX. Когда
пользователь вводит команду (например, по нажатию Enter), командная оболочка
выполняет следующие действия:
1. Анализ команды: выделение имени, параметров и аргументов;
2. Если это встроенная команда, для неё вызывается функция-обработчик;
3. Если это внешняя команда:
a) производится поиск программы с соответствующим именем;
b) создаётся дочерний процесс оболочки (системный вызов fork);
c) в дочернем процессе запускается необходимая команда с расшифрованными
параметрами и аргументами (системный вызов exec);
d) оболочка контролирует выполнение дочернего процесса, передаёт ему сигналы и
ввод пользователя, ожидает его завершения (системный вызов wait);
4. Результаты работы возвращаются пользователю, отображается приглашение – он
может вводить следую команду.

7.

Процесс выполнения команды
Процесс, созданный ядром, известен как
«родительский процесс», а все процессы,
производные от родительского процесса,
называются «дочерними процессами»

8.

Возвращаемое значение
Каждый процесс при завершении возвращает своему
родительскому процессу специальный код завершения
программы. Этот код может использоваться для получения
результата выполнения программы и для проверки корректности
её выполнения (возврата кода ошибки).
Традиционно для UNIX, в случае успешного выполнения
программа (а также большинство системных функций)
возвращает значение 0. Другие значения (все, отличные от 0)
означают тот или иной вид ошибки.

9.

Способы объединения команд
Существует возможность объединять несколько команд в одной командной
строке. Это можно делать несколькими способами:
• Последовательное выполнение;
• Условное выполнение (И);
• Условное выполнение (ИЛИ);
• Конвейер.

10.

Способы объединения команд
Последовательное выполнение:
• Команды выполняются одна за другой независимо от результата их
исполнения. В качестве разделителя выступает символ точки с
запятой («;»).
• В качестве примера можно рассмотреть составную команду du -sh;
date, которая выводит на экран содержимое домашней директории,
а затем текущие дату и время.

11.

Способы объединения команд
Условное выполнение (И)
• Проверяется код завершения первой программы, если он равен 0,
производится выполнение второй программы, и так далее. Таким образом,
последняя команда выполнится только при успешном завершении всех
предыдущих. В качестве разделителя выступают два амперсанда («&&»).
• В качестве примера можно рассмотреть составную команду test -r /tmp/txt
&& cp /tmp/txt ., которая проверяет возможность чтения файла /tmp/txt и в
случае успеха, копирует этот файл в локальную директорию.

12.

Способы объединения команд
Условное выполнение (ИЛИ)
• Проверяется код завершения первой программы, если он не равен 0,
производится выполнение второй программы, и так далее. Последняя
команда будет запущена только если ни одна из предыдущих не закончилась
успешно. В качестве разделителя выступают две вертикальный черты («||»).
• В качестве примера можно рассмотреть составную команду test -d /tmp/dir
|| mkdir /tmp/dir, которая проверяет существование директории /tmp/dir и
если её нет, создаёт её.

13.

Способы объединения команд
Конвейер
• При выполнении программ связываются их стандартные выходы и входы, так что
текстовые данные передаются через них последовательно, как по конвейеру. Этот
механизм является одной из самых фундаментальных особенностей UNIX и широко
используется при работе в командной стоке.
• Все программы могут быть запущены одновременно так, чтобы обеспечить
интерактивность вывода при прохождении данных через цепочку программ. Если
одна из программ в цепочке конвейера завершится (например, в случае ошибки),
остальным будет отправлен специальный сигнал (SIGPIPE).
• В качестве разделителя используется символ вертикальный черты («|»).
• Рассмотрим пример команды cat file.txt | uniq | sort, которая читает содержимое
файла file.txt, удаляет из него повторяющиеся строки и сортирует оставшиеся строки
по алфавиту. Результат выводится на экран.

14.

ПРАКТИЧЕСКОЕ
ЗАНЯТИЕ
ЧАСТЬ 1

15.

Поиск системных журналов
■ 1. Перейти в каталог test с помощью команды cd test:
Примерный результат:
user@desktop ~ $ cd test

16.

Поиск системных журналов
■ 2. Вывести список всех файлов и директорий в текущей директории, включая
содержимое поддиректорий с помощью команды find:
Примерный результат:
user@desktop ~ $ find
.
./orig.lnk
./orig.txt
./subtest
./copy1.txt
./copy2.txt

17.

Поиск системных журналов
■ 3. Найти все файлы и дериктории в текущей директории и ее
поддиректориях, которые начиняются на «o» с помощью команды find name "o*":
Примерный результат:
user@desktop ~ $ find -name "o*"
./orig.lnk
./orig.txt

18.

Поиск системных журналов
■ Команда find представляет собой универсальный инструмент поиска.
find путевое_имя -опции
где путевое_имя — это каталог, с которого необходимо начинать поиск.
-name — Поиск файлов, имена которых соответствуют заданному шаблону
-type — Поиск файлов определенного типа, а именно: b — специальный
блочный файл; d — каталог; с — специальный символьный файл; p —
именованный канал; l — символическая ссылка; s — сокет; f — обычный
файл

19.

Поиск системных журналов
■ 4. Найти все файлы и дериктории в директории /etc и ее поддиректориях, которые начиняются на
«o» с помощью команды find /etc -name "o*":
Примерный результат:
user@desktop ~ $ find /etc -name "o*"
/etc/apm/other.d
/etc/joe/syntax/ocaml.jsf
/etc/opt /etc/ppp/options-pptp
/etc/ppp/options-pppoe
/etc/ppp/options
/etc/ssl/openssl.cnf
/etc/dpkg/origins
/etc/pam.d/other
/etc/texmf/tex/plain/config/omega.ini

20.

Поиск системных журналов
■ 5. Найти все обычные файлы в директории /etc и ее поддиректориях, которые
начинаются на «o» с помощью команды find /etc -name "o*" -a -type f:
Примерный результат:
user@desktop ~ $ find /etc -name "o*" -a -type f
/etc/joe/syntax/ocaml.jsf
/etc/ppp/options-pptp
/etc/ppp/options-pppoe
/etc/ppp/options
/etc/ssl/openssl.cnf
/etc/pam.d/other
/etc/texmf/tex/plain/config/omega.ini

21.

Поиск системных журналов
■ 6. Найти все обычные файлы в директории /var/ и ее поддиректориях, заканчивающиеся
на «log»:
Примерный результат:
user@desktop ~ $ find /var -name "*log" -a -type f
find: /var/lib/mysql: Permission denied
find: /var/lib/samba/private: Permission denied
...
/var/log/emerge.log
/var/log/lastlog
/var/log/faillog
/var/log/Xorg.0.log
Список найденных файлов может быть слишком большим и для его просмотра можно воспользоваться
«прокруткой» терминала с помощью клавиш Shift-PgUp и Shift-PgDn

22.

Поиск системных журналов
■ 7. Исключить вывод сообщений об ошибках (например, «Permission denied») с
помощью перенаправления вывода ошибок в специальное устройство /dev/null.
Для этого ввести команду find /var -name "*log" -a -type f 2>/dev/null
Примерный результат:
user@desktop ~ $ find /var -name "*log" -a -type f 2>/dev/null
/var/log/emerge.log
/var/log/lastlog /var/log/faillog
/var/log/Xorg.0.log

23.

Поиск системных журналов
■ 8. Создать директорию logs с помощью команды mkdir test/logs:
Примерный результат:
user@desktop ~ $ mkdir test/logs

24.

Каталоги UNIX
■ 9. Скопировать найденные файлы в локальную директорию с помощью параметра exec команды find. Для этого ввести команду find /var -name "*log" -a -type f -exec cp
{} test/logs/ 2>/dev/null:
Примерный результат:
user@desktop ~ $ find /var -name "*log" -a -type f -exec cp {} test/logs/ 2>/dev/null
user@desktop ~ $ ls test/logs
итого 789
-rw-r----- 1 user users 601033 Окт 16 18:37 emerge.log
-rw-r--r-- 1 user users 292292 Окт 16 18:37 lastlog
-rw-r--r-- 1 user users 37383 Окт 16 18:37 Xorg.0.log
Были скопированы все файлы, права на чтение которых у нас есть.

25.

Каталоги
UNIX
Указание 2>/dev/nullотфильтрует ошибки, чтобы они не выводились на вашу консоль. Более
подробно: 2 представляет дескриптор ошибки, в который записываются ошибки. По умолчанию
они распечатываются на консоли.
user@desktop ~ $ find /var -name "*log" -a -type f -exec cp {} test/logs/ 2>/dev/null
• При использовании find есть возможность для указания действий, которые будут выполнены
при нахождении файла с именем, удовлетворяющим выражению поиска, а наиболее гибким
вариантом, без сомнения, является использование параметра exec.
• -exec команда; Выполнить команду; выполнение считается успешным в случае статуса
выхода, равного нулю. Все символы, следующие за командой, считаются ее аргументами до
того момента, как встречается символ ";". Строка "{}" заменяется на имя рассматриваемого
файла каждый раз, когда она встречается среди аргументов команды.

26.

ПРАКТИЧЕСКОЕ
ЗАНЯТИЕ
ЧАСТЬ 2

27.

Архивирование и деархивирование файлов и директорий
■ 1. Перейти в домашнюю директорию с помощью команды cd:
Примерный результат:
user@desktop test $ cd
user@desktop ~ $

28.

Архивирование и деархивирование файлов и директорий
■ 2. Создать архив с именем test.tar.gz с применением сжатия, содержащий
директорию test с помощью команды tar -czf test.tar.gz test:
Примерный результат:
user@desktop ~ $ tar -czf test.tar.gz test
user@desktop ~ $ ls
drwxr-xr-x 4 user users 208 Окт 16 18:36 test/
-rw-r--r-- 1 user users 79173 Окт 16 18:49 test.tar.gz

29.

Архивирование и деархивирование файлов и директорий
■ Так, чтобы создать новый архив, в терминале используется следующая
конструкция:
tar опции архив.tar файлы_для_архивации
■ Для его распаковки:
tar опции архив.tar
user@desktop ~ $ tar -czf test.tar.gz test

30.

Архивирование и деархивирование файлов и директорий
■ -c
--create
■ -z
--gzip Перенаправить вывод в команду gzip
■ -f file
--file
Создать новый архив
Вывести результат в файл (или на устройство) file
user@desktop ~ $ tar -czf test.tar.gz test

31.

Архивирование и деархивирование файлов и директорий
■ 3. Создать новую директорию для содержимого архива командой mkdir
test2:
Примерный результат:
user@desktop ~ $ mkdir test2

32.

Архивирование и деархивирование файлов и директорий
■ 4. Перейти в новую директорию с помощью команды cd test2:
Примерный результат:
user@desktop ~ $ cd test2

33.

■ 5. Развернуть содержимое архива в текущую директорию с помощью
команды tar -xzf ../test.tar.gz:
Примерный результат:
user@desktop test2 $ tar -xzf ../test.tar.gz

34.

■ -x
--extract
■ -z
--gzip Перенаправить вывод в команду gzip
■ -f file
Извлечь файлы из архива
--file
Вывести результат в файл (или на устройство) file
user@desktop test2 $ tar -xzf ../test.tar.gz

35.

■ $ ls опции /путь/к/папке
■ Просмотр содержимого той или иной папки. Также может применяться для просмотра
разрешения для файлов и папок.
user@desktop test2 $ ls -l -F
■ -l - выводить подробный список, в котором будет отображаться владелец, группа, дата
создания, размер и другие параметры;;
■ -F - показывать тип объекта, к каждому объекту будет добавлен один из специализированных
символов */=>@|;

36.

ПРАКТИЧЕСКОЕ
ЗАНЯТИЕ
ЧАСТЬ 3

37.

Cоздание новых текстовых файлов
■ 1. Ввести команду echo "One line":
Примерный результат:
user@desktop test $ echo "One line"
One line
Данная команда принимает строку в виде аргумента и выводит её на стандартный
вывод.

38.

Cоздание новых текстовых файлов
■ 2. Ввести ту же команду, но перенаправить вывод в файл second.txt
с помощью «>». Ввести команду echo "One line" > second.txt:
Примерный результат:
user@desktop test $ echo "One line" > second.txt

39.

Cоздание новых текстовых файлов
■ 3. Добавить в конец файла second.txt строку «A line» с помощью
другого перенаправления echo "A line" >> second.txt:
Примерный результат:
user@desktop test $ echo "A line" >> second.txt

40.

Cоздание новых текстовых файлов
■ 4. Вывести содержимое файла с помощью команды cat
second.txt:
Примерный результат:
user@desktop test $ cat second.txt One line A line

41.

Cоздание новых текстовых файлов
■ 5. С помощью команды cat можно создавать многострочные файлы –, если
переопределить вывод программы в файл и вводить текст до нажатия Ctrl-D (конец
ввода). Ввести команду cat >multiline.txt и набрать текст
Примерный результат:
user@desktop test $ cat >multiline.txt
Simple text: blah-blah-blah 1
234567890
bye!
(Ctrl+D)
user@desktop test $

42.

Cоздание новых текстовых файлов
■ 6. Убедиться, что содержимое файла совпадает с введённым текстом,
включая все переводы строки. Для этого ввести команду cat multiline.txt
Примерный результат:
user@desktop test $ cat multiline.txt
Simple text:
blah-blah-blah
1234567890
bye!

43.

Cоздание новых текстовых файлов
■ 7. Основным назначением команды cat является объединение
файлов, имена которых передаются как аргументы командной
строки. Объединить файлы с помощью команды cat orig.txt
second.txt multiline.txt > big.txt:
Примерный результат:
user@desktop test $ cat orig.txt second.txt multiline.txt > big.txt

44.

Cоздание новых текстовых файлов
■ 8. Убедиться, что новый файл содержит строки из перечисленных файлов с
помощью команды cat big.txt:
Примерный результат:
user@desktop test $ cat big.txt
Hello, world
One line
A line
Simple text:
blah-blah-blah 1 2 3 4 5 6 7 8 9 0
bye!
English     Русский Правила