Вход/Регистрация
Операционная система UNIX
вернуться

Робачевский Андрей Михайлович

Шрифт:

Система управления заданиями

Командный интерпретатор может поддерживать управление заданиями. Для Bourne shell (/bin/sh), который мы рассматриваем, систему управления заданиями включает парный ему интерпретатор /bin/jsh. В остальном этот интерпретатор имеет те же возможности.

В системе управления заданиями каждая команда (простая или составная), которую пользователь запускает со своего терминала, называется заданием. Все задания могут выполняться либо в текущем режиме, либо в фоновом режиме, либо быть приостановлены. Задание в каждом из этих состояний обладает рядом характеристик:

Состояние задания Характеристики
Выполняется в текущем режиме Задание может считывать данные и выводить данные на терминал пользователя
Выполняется в фоновом режиме Заданию запрещен ввод с терминала. Возможность вывода на терминал определяется дополнительными установками
Приостановлено Задание не выполняется

Каждое задание при запуске получает уникальный идентификатор, называемый номером задания, который используется в командах системы управления. Синтаксис номера задания, применяемый в командах:

%jobid

где

jobid
может принимать следующие значения:

%
или
+
Текущее задание — самое последнее запущенное или вновь запущенное задание
–
Предыдущее задание (по отношению к текущему)
?строка
Задание, для которого
строка
присутствует в командной строке запуска
n
Задание с номером n
pref
Задание, на которое можно уникально указать префиксом
pref
, например, команда ls(1), запущенная в фоновом режиме, адресуется заданием %ls

Система управления заданиями позволяет использовать следующие дополнительные команды:

bg [%jobid]
Продолжает выполнение остановленного задания в фоновом режиме. Без параметра относится к текущему заданию.
fg [%jobid]
Продолжает выполнение остановленного задания в текущем режиме. Если задание
jobid
выполнялось в фоновом режиме, команда перемещает его в текущий режим.
jobs [-p | -l] [%jobid ... ]
Выводит информацию об остановленных и фоновых заданиях с указанными номерами. Если последний аргумент опущен, выводится информация обо всех остановленных и фоновых заданиях. Приведенные ниже опции изменяют формат вывода:
– l
 Вывести идентификатор группы процессов и рабочий каталог.
– р
 Вывести только идентификатор группы процессов.
kill [-signo] %jobid
Обеспечивает те же возможности, что и команда kill(1), но по отношению к заданиям.
stop %jobid
Останавливает выполнения фонового задания.
wait %jobid
Ожидает завершения выполнения задания
jobid
и возвращает его код возврата.

Приведенный ниже пример иллюстрирует использование команд управления заданиями и не нуждается в комментариях:

$ inf.j &

[1] 9112

$ comm1 &

[2] 9113

$ jobs

[1] - Running inf.j

[2] + Running comm1

$ stop %1

$ jobs

[1] - Stopped (signal) inf.j

[2] + Running comm1

$ stop %%

$ jobs -1

[1] - 9112 Stopped (signal) inf.j (wd: /home/andy/SH//JOB)

[2] + 9113 Stopped (signal) comm1 (wd: /home/andy/SH/JOB)

$ bg %1

[1] inf.j &

$ jobs

[1] + Running inf.j

[2] - Stopped (signal) comm1

$ kill %1 %2

$ jobs

[1] + Done(208) inf.j

[2] - Done (208) comm1

$

Основные утилиты UNIX

В предыдущих разделах мы использовали некоторые утилиты UNIX. Ниже приводятся краткие характеристики утилит, выпавших из поля нашего зрения. Более подробно с различными утилитами можно познакомиться в электронном справочнике man(1).

Утилиты для работы с файлами

Поле [

opt
] содержит конкретные опции каждой утилиты.

cd [dir]
Изменяет текущий каталог. При задании без параметра — производит переход в домашний каталог пользователя.
cmp [opt] file1 file2
Утилита cmp(1) сравнивает два файла, указанных в качестве аргументов. Если файлы одинаковы, никакого сообщения не выводится. В противном случае выводятся данные о первом несоответствии между этими файлами (в данном примере первое различие найдено в 13-м символе 4-й строки):
$ cat file1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $ cat file2 1 2 3 4 5 6 diff1 7 8 9 10 11 12 13 14 15 diff2 $ cmp file1 file2 file1 file2 differ: char 13, line 4
diff [opt] file1 file2
Утилита diff(1) также сравнивает два файла и выводит список изменений, которые необходимо внести в содержимое этих файлов для того, чтобы преобразовать первый файл во второй. По существу, вывод утилиты diff(1) представляет собой команды редактора ed(1), необходимые для преобразования
file1
в
file2
:
$ diff file1 file2 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) служит для копирования файлов. При этом создается не жесткая связь, а новый файл:
$ cp file1 file2 $ ls -li file1 file2 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] file1 file2 mv [opt] file1 ... dir
Утилита mv(1) изменяет имя файла. Если последний параметр является каталогом, то число аргументов утилит cp(1) или mv(1) может превышать 2. В этом случае будет производиться копирование или перемещение указанных файлов в каталог.
rm [opt] file1... rmdir dir1...
Утилиты удаления файлов и каталогов. При этом удаляются только записи имен файлов в соответствующих каталогах, фактическое содержимое файла (метаданные и дисковые данные) будет удалено, если число жестких связей для файла станет равным 0.
ls [opt] [file1 file2 ...]
Без параметров утилита ls(1) выводит имена файлов текущего каталога. В качестве параметров можно задать имена каталогов, содержимое которых необходимо вывести, или имена файлов, информацию о которых нужно получить. Опции утилиты позволяют получить список различной информативности и формата.
ln [opt] source target
Утилита ln(1) создает жесткую связь имени source с файлом, адресуемым именем target. При использовании опции -s будет создана символическая связь.
mkdir [-m mode] [-p] dir1...
Создать каталог.
pwd
Вывести имя текущего каталога.
fgrep [opt] <подстрока> file1...
Утилиты поиска фрагментов текста в файлах. Могут использоваться в качестве фильтров в программных каналах. Для поиска подстроки в файлах можно использовать самую простую из утилит fgrep(1) (fast grep). Если подстрока поиска содержит пробелы или знаки табуляции, ее необходимо заключить в кавычки. Если подстрока уже содержит кавычки, их надо экранировать, поместив символ '\' непосредственно перед кавычками:
$ fgrep "рассмотрим в разделе \"Создание процесса\"" chap*
Если вы хотите сделать поиск нечувствительным к заглавным/строчным символам, используйте ключ – у. Для поиска строк, не содержащих указанную подстроку, используется ключ – v.
grep [opt] <рег_выражение> file1... egrep [opt] <рег_выражение> file1...
Утилиты grep(1) и egrep(1) позволяют производить более сложный поиск, например, когда вы не уверены в написании искомого слова, или хотите найти слова, расположенные в определенных местах файла. В этом случае в качестве подстроки поиска указывается регулярное выражение (
рег_выражение
). Например, чтобы произвести поиск слова "центр" в американском (center) и британском (centre) написании, можно задать следующую команду:
$ grep "cent[er]" file
или
$ grep "cent[er][er]" file
[er]
является регулярным выражением, соответствующим либо символу
'е'
, либо
'r'
. Регулярное выражение должно быть заключено в кавычки для предотвращения интерпретации специальных символов командным интерпретатором shell.
cat [opt] file
Утилиты просмотра содержимого файла. Команда
cat file
выводит содержимое файла
file
на экран терминала. Если у вас есть подозрение, что файл не текстовый, т.е. содержит "непечатные" символы, лучше запустить cat(1) с ключом
– v
. В этом случае вывод таких символов (которые, кстати, могут нарушить настройки вашего терминала) будет подавлен.
more [opt] file pg [opt] file
Если размер файла велик и его содержимое не помещается в терминальном окне, удобнее будет воспользоваться утилитами pg(1) и more(1), позволяющими выводить файл порциями.
head [-n] file tail [opt] file
Посмотреть только начало (первые n строк) или конец (последние n строк) файла можно с помощью утилит head(1) и tail(1), соответственно.
sort
Для сортировки строк файла используется утилита sort(1). Например, для сортировки текста в алфавитном порядке необходимо ввести следующую команду:
$ sort -d file >sorted file
Вы можете указать номер слова строки, по которому необходимо произвести сортировку (точнее, номер поля записи; по умолчанию записью является строка, а поля разделены пробелами). Например, для сортировки строк файла
file
Андрей Май Борис Январь Владимир Март
по месяцам, можно использовать команду
$ sort -M +1 file
в результате получим:
Борис Январь Владимир Март Андрей Май
Опция
– M
определяет сортировку по месяцам (не по алфавиту), опция
+1
указывает, что сортировку необходимо проводить по второму полю каждой строки.
cut
Позволяет отфильтровать указанные поля строк файла. Разделитель полей указывается опцией
– d<sep>
. Например, чтобы получить реальные имена пользователей системы (пятое поле файла паролей), можно использовать следующую команду:
$ cat /etc/passwd | cut -f5 -d: ... WWW Administrator Yuri Korenev Serge Smirnoff W3 group Konstantin Fedorov Andrei Robachevsky Sergey Petrov
wc file
Позволяет вывести число строк, слов и символов текста файла.
find dir [opt]
Выполняет поиск файла в файловой системе UNIX, начиная с каталога
dir
. Например, для вывода полного имени исполняемого файла командного интерпретатора Bourne shell введите команду:
$ find / -name sh -print 2>/dev/null /usr/bin/sh /usr/xpg4/bin/sh /sbin/sh
С помощью опции
– name
указывается имя искомого файла, а с помощью опции
– print
 — действие (вывести полное имя). С помощью find(1) можно производить поиск файлов по другим критериям, например, размеру, последнему времени модификации и т.д. Например, чтобы найти файлы с именем core (образ процесса, создаваемый при неудачном его завершении и используемый в целях отладки), последнее обращение к которым было, скажем, более месяца назад (скорее всего такие файлы не нужны пользователям и только "засоряют" файловую систему), можно задать команду:
$ find / -name core -atime +30 -print /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
Если вы сторонник жесткого администрирования, то можно применить следующую команду:
$ find / -name core -atime +30 -exec rm {} \;
которая автоматически удалит все найденные файлы.
chown user file ...
Изменяет владельца-пользователя указанных файлов.
chgrp group file ...
Изменяет владельца-группу указанных файлов.
chmod mode file ...
Изменяет права доступа и дополнительные атрибуты файлов.
file file1 ...
Сканирует начало файла и пытается определить его тип. Если это текстовый файл (ASCII), file(1) пытается определить его синтаксис (текст, программа на С и т.д.). Если это бинарный файл, то классификация ведется по так называемому magic number, определения которого находятся в файле /etc/magic.
$ file * 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
  • Читать дальше
  • 1
  • ...
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: