Лекция: Группирование команд
Группы команд или сложные команды могут формироваться с помощью специальных символов (метасимволов):
& — процесс выполняется в фоновом режиме, не дожидаясь окончания предыдущих процессов;
? — шаблон, распространяется только на один символ;
* — шаблон, распространяется на все оставшиеся символы;
| — программный канал — стандартный вывод одного процесса является стандартным вводом другого;
> — переадресация вывода в файл;
< — переадресация ввода из файла;
; — если в списке команд команды отделяются друг от друга точкой с запятой, то они выполняются друг за другом;
&& — эта конструкция между командами означает, что последующая команда выполняется только при нормальном завершении предыдущей команды ( код возврата 0 );
|| — последующая команда выполняется только, если не выполнилась предыдущая команда ( код возврата 1 );
() — группирование команд в скобки;
{ } — группирование команд с объединенным выводом;
[] — указание диапазона или явное перечисление ( без запятых);
>> — добавление содержимого файла в конец другого файла.
Примеры.
who | wc — подсчет количества работающих пользователей командой wс (word count — счет слов);
cat text.1 > text.2 — содержимое файла text.1 пересылается в файл text.2;
mail student < file.txt — электронная почта передает файл file.txt всем пользователям, перечисленным в командной строке;
cat text.1,text.2 — просматриваются файлы text.1 и text.2;
cat text.1 >> text.2 — добавление файла text.1 в конец файла text.2;
cc primer.c & — трансляция СИ — программы в фоновом режиме. Имя выполняемой программы по умолчанию a.out.
cc -o primer.o primer.c — трансляция СИ-программы с образованием файла выполняемой программы с именем primer.o;
rm text.* — удаление всех файлов с именем text;
{cat text.1; cat text.2} | lpr — пpосмотp файлов text.1 и text.2 и вывод их на печать;
ps [al] [number] — команда для вывода информации о процессах:
-a — вывод информации обо всех активных процессах, запущенных с вашего терминала;
-l — полная информация о процессах;
number — номер процесса.
Команда ps без параметров выводит информацию только об активных процессах, запущенных с данного терминала, в том числе и фоновых. На экран выводится подробная информация обо всех активных процессах в следующей форме:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
1 S 200 210 7 0 2 20 80 30 703a 03 0:07 cc
1 R 12 419 7 11 5 20 56 20 03 0:12 ps
F — флаг процесса (1 — в оперативной памяти, 2 — системный процесс, 4 — заблокирован в ОЗУ, 20 — находится под управлением другого процесса, 10 — подвергнут свопингу);
S — состояние процесса (O — выполняется процессором, S — задержан, R — готов к выполнению, I — создается);
UID — идентификатор пользователя;
PID — идентификатор процесса;
PPID — номер родительского процесса;
C — степень загруженности процессора;
PRI — приоритет процесса, вычисляется по значению переменной NICE и чем больше число, тем меньше его приоритет;
NI — значение переменной NICE для вычисления динамического приоритета, принимает величины от 0 до 39;
ADDR — адрес процесса в памяти;
SZ — объем ОЗУ, занимаемый процессом;
WCHAN — имя события, до которого процесс задержан, для активного процесса — пробел;
TTY — номер управляющего терминала для процесса;
TIME — время выполнения процесса;
CMD — команда, которая породила процесс.
nice [-приращение приоритета] команда[аргументы] — команда изменения приоритета. Каждое запущенное задание (процесс) имеет номер приоритета в диапазоне от 0 до 39, на основе которого ядро вычисляет фактический приоритет, используемый для планирования процесса. Значение 0 представляет наивысший приоритет, а 39 — самый низший. Увеличение номера приоритета приводит к понижению приоритета, присвоенного процессу. Команда nice -10 ls -l увеличивает номер приоритета, присвоенный процессу ls -l на 10.
renice 5 1836 — команда устанавливает значение номера приоритета процесса с идентификатором 1836 равным 5. Увеличить приоритет процесса может только администратор системы.
kill [-sig] <идентификатор процесса> — прекращение процесса до его программного завершения. sig — номер сигнала. Sig = -15 означает программное (нормальное) завершение процесса, номер сигнала = -9 — уничтожение процесса. По умолчанию sig= -9. Вывести себя из системы можно командой kill -9 0. Пользователь с низким приоритетом может прервать процессы, связанные только с его терминалом.
mc — вызов файлового менеджера (программы — оболочки) Midnight Commander, аналогичного Norton Commander.
sort [-dr] — сортировка входных файлов и вывод результата на экран.
Задание №1.Для выполнения данной работы будем использовать ранее установленный Linux Ubuntu. Запускаем Linux. После прохождения идентификации включаем терминал.
Рис 1. Терминал Linux Ubuntu
- Для работы в терминале Ubuntu требуются права пользователя root, но, к сожалению, по умолчанию, он недоступен, поэтому для выполнения некоторых (не всех) команд надо писать sudo <команда>, и подтверждать свои права вводом пароля. И не пугайтесь того, что его не видно в терминале! Наберите точно по памяти, по окончании ввода нажмите Enter.
- Для получении справки о дополнительных возможностях некоторых программ следует набрать <команда> –help
- Потренируйтесь в выполнении команд:
· date
· oclock
· finger
· hwclock
· uname
· history
· clear
· ls
- Создайте нового пользователя, при помощи терминала Ubuntu, и введите его в группу admin. Создайте пароль пользователю. Войдите под ним в систему. Процесс создания и ввода в группу внесите в отчет.
- Разберите выполнение незадействованных команд таблицы 2. Потренируйтесь в выполнении, определите их назначение и область применения.