Система управления заданиями позволяет использовать следующие дополнительные команды:
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
Утилиты для управления процессами