Операционная система UNIX
Операционная система UNIX читать книгу онлайн
Книга посвящена семейству операционных систем UNIX и содержит информацию о принципах организации, идеологии и архитектуре, объединяющих различные версии этой операционной системы.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Система управления заданиями позволяет использовать следующие дополнительные команды:
bg [%<i>jobid</i>] | Продолжает выполнение остановленного задания в фоновом режиме. Без параметра относится к текущему заданию. |
fg [%<i>jobid</i>] | Продолжает выполнение остановленного задания в текущем режиме. Если задание <i>jobid</i> |
jobs [-p | -l] [%<i>jobid</i> ... ] | Выводит информацию об остановленных и фоновых заданиях с указанными номерами. Если последний аргумент опущен, выводится информация обо всех остановленных и фоновых заданиях. Приведенные ниже опции изменяют формат вывода: -l -р |
kill [-signo] %<i>jobid</i> | Обеспечивает те же возможности, что и команда kill(1), но по отношению к заданиям. |
stop %<i>jobid</i> | Останавливает выполнения фонового задания. |
wait %<i>jobid</i> | Ожидает завершения выполнения задания <i>jobid</i> |
Приведенный ниже пример иллюстрирует использование команд управления заданиями и не нуждается в комментариях:
$ <b>inf.j &</b>
[1] 9112
$ <b>comm1</b> &
[2] 9113
$ <b>jobs</b>
[1] - Running inf.j
[2] + Running comm1
$ <b>stop %1</b>
$ <b>jobs</b>
[1] - Stopped (signal) inf.j
[2] + Running comm1
$ <b>stop %%</b>
$ <b>jobs -1</b>
[1] - 9112 Stopped (signal) inf.j (wd: /home/andy/SH//JOB)
[2] + 9113 Stopped (signal) comm1 (wd: /home/andy/SH/JOB)
$ <b>bg %1</b>
[1] inf.j &
$ <b>jobs</b>
[1] + Running inf.j
[2] - Stopped (signal) comm1
$ <b>kill %1 %2</b>
$ <b>jobs</b>
[1] + Done(208) inf.j
[2] - Done (208) comm1
$
Основные утилиты UNIX
В предыдущих разделах мы использовали некоторые утилиты UNIX. Ниже приводятся краткие характеристики утилит, выпавших из поля нашего зрения. Более подробно с различными утилитами можно познакомиться в электронном справочнике man(1).
Утилиты для работы с файлами
Поле [
opt
cd [<i>dir</i>] | Изменяет текущий каталог. При задании без параметра — производит переход в домашний каталог пользователя. |
cmp [opt] <i>file1 file2</i> | Утилита cmp(1) сравнивает два файла, указанных в качестве аргументов. Если файлы одинаковы, никакого сообщения не выводится. В противном случае выводятся данные о первом несоответствии между этими файлами (в данном примере первое различие найдено в 13-м символе 4-й строки): $ <b>cat file1</b> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ <b>cat file2</b> 1 2 3 4 5 6 diff1 7 8 9 10 11 12 13 14 15 diff2 $ <b>cmp file1 file2</b> file1 file2 differ: char 13, line 4 |
diff [opt] <i>file1 file2</i> | Утилита diff(1) также сравнивает два файла и выводит список изменений, которые необходимо внести в содержимое этих файлов для того, чтобы преобразовать первый файл во второй. По существу, вывод утилиты diff(1) представляет собой команды редактора ed(1), необходимые для преобразования file1 file2 $ <b>diff file1 file2</b> 3a4 > diff1 5c6, 7 < 11 12 13 14 15 ... > 11 12 13 14 15 diff2 |
cp [opt] file1 file2 cp [opt] file1 ... dir | Утилита cp(1) служит для копирования файлов. При этом создается не жесткая связь, а новый файл: $ <b>cp file1 file2</b> $ <b>ls -li file1 file2</b> 261425 -rw-r--r-- 1 andy user 49 Dec 24 12:58 file1 261427 -rw-r--r-- 1 andy user 49 Dec 24 13:13 file2 |
mv [opt] <i>file1 file2</i> mv [opt] <i>file1</i> ... <i>dir</i> | Утилита mv(1) изменяет имя файла. Если последний параметр является каталогом, то число аргументов утилит cp(1) или mv(1) может превышать 2. В этом случае будет производиться копирование или перемещение указанных файлов в каталог. |
rm [opt] <i>file1</i>... rmdir <i>dir1</i>... | Утилиты удаления файлов и каталогов. При этом удаляются только записи имен файлов в соответствующих каталогах, фактическое содержимое файла (метаданные и дисковые данные) будет удалено, если число жестких связей для файла станет равным 0. |
ls [opt] [<i>file1 file2</i> ...] | Без параметров утилита ls(1) выводит имена файлов текущего каталога. В качестве параметров можно задать имена каталогов, содержимое которых необходимо вывести, или имена файлов, информацию о которых нужно получить. Опции утилиты позволяют получить список различной информативности и формата. |
ln [opt] source target | Утилита ln(1) создает жесткую связь имени source с файлом, адресуемым именем target. При использовании опции -s будет создана символическая связь. |
mkdir [-m mode] [-p] <i>dir1</i>... | Создать каталог. |
pwd | Вывести имя текущего каталога. |
fgrep [opt] <<i>подстрока</i>> <i>file1</i>... | Утилиты поиска фрагментов текста в файлах. Могут использоваться в качестве фильтров в программных каналах. Для поиска подстроки в файлах можно использовать самую простую из утилит fgrep(1) (fast grep). Если подстрока поиска содержит пробелы или знаки табуляции, ее необходимо заключить в кавычки. Если подстрока уже содержит кавычки, их надо экранировать, поместив символ '' непосредственно перед кавычками: $ <b>fgrep "рассмотрим в разделе "Создание процесса"" chap*</b> |
grep [opt] <<i>рег_выражение</i>> <i>file1</i>... egrep [opt] <<i>рег_выражение</i>> <i>file1</i>... | Утилиты grep(1) и egrep(1) позволяют производить более сложный поиск, например, когда вы не уверены в написании искомого слова, или хотите найти слова, расположенные в определенных местах файла. В этом случае в качестве подстроки поиска указывается регулярное выражение (<i>рег_выражение</i> $ <b>grep "cent[er]" file</b> $ <b>grep "cent[er][er]" file</b> [er] 'е' 'r' |
cat [opt] <i>file</i> | Утилиты просмотра содержимого файла. Команда cat file file -v |
more [opt] <i>file</i> pg [opt] file | Если размер файла велик и его содержимое не помещается в терминальном окне, удобнее будет воспользоваться утилитами pg(1) и more(1), позволяющими выводить файл порциями. |
head [-n] file tail [opt] file | Посмотреть только начало (первые n строк) или конец (последние n строк) файла можно с помощью утилит head(1) и tail(1), соответственно. |
sort | Для сортировки строк файла используется утилита sort(1). Например, для сортировки текста в алфавитном порядке необходимо ввести следующую команду: $ <b>sort -d file >sorted file</b> file Андрей Май Борис Январь Владимир Март $ <b>sort -M +1 file</b> Борис Январь Владимир Март Андрей Май -M +1 |
cut | Позволяет отфильтровать указанные поля строк файла. Разделитель полей указывается опцией -d<<i>sep</i>> $<b> cat /etc/passwd | cut -f5 -d:</b> ... WWW Administrator Yuri Korenev Serge Smirnoff W3 group Konstantin Fedorov Andrei Robachevsky Sergey Petrov |
wc <i>file</i> | Позволяет вывести число строк, слов и символов текста файла. |
find <i>dir</i> [opt] | Выполняет поиск файла в файловой системе UNIX, начиная с каталога <i>dir</i> $ <b>find / -name sh -print 2>/dev/null</b> /usr/bin/sh /usr/xpg4/bin/sh /sbin/sh -name -print $ <b>find / -name core -atime +30 -print</b> /u/local/lib/zircon/lib/core /u/local/etc/httpd/data/zzmaps/core /home/amd/WORK/novosti/core /home/amd/WORK/access/core /home/guests/snell/core $ <b>find / -name core -atime +30 -exec rm {} ;</b> |
chown user <i>file</i> ... | Изменяет владельца-пользователя указанных файлов. |
chgrp group <i>file</i> ... | Изменяет владельца-группу указанных файлов. |
chmod mode <i>file</i> ... | Изменяет права доступа и дополнительные атрибуты файлов. |
file <i>file1</i> ... | Сканирует начало файла и пытается определить его тип. Если это текстовый файл (ASCII), file(1) пытается определить его синтаксис (текст, программа на С и т.д.). Если это бинарный файл, то классификация ведется по так называемому magic number, определения которого находятся в файле /etc/magic. $ <b>file *</b> nlc-2.2d.tar: tar archive report.doc: ascii text work: directory runme.c: с program text runme: ELF 32-bit MSB executable figure.gif: data |