- •Управление процессами в ос Linux
- •Операторы перенаправления ввода-вывода Linux перечислены в таблице 1.
- •Приостановим её выполнение:
- •Информация о состоянии процессов. Мониторинг процессов с помощью ps
- •Теперь, посмотрим результат вывода следующей команды:
- •Получение списка пользователей, работающих в системе
- •Запуск команд в определенное время с помощью команды at
- •Первая команда
- •После ввода всей команды вы увидите на дисплее нечто, наподобие:
- •Командный интерпретатор shell
- •Работа в графической среде X Windows
Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 5
Управление процессами в ос Linux
Продолжительность работы: 4 часа.
Цель работы: знакомство с многозадачностью ОС Linux; научиться работать со многими процессами, планированию запуска команд в определенное время; мониторинг многозадачной среды; управление многозадачностью.
Краткие теоретические сведения
Введение
О процессах LINUX
Процессом в Linuxназывается выполняющаяся программа. ПосколькуLinux– многозадачная система, то в одно и то же время могут выполняться несколько процессов. Чтобы их различать,Linuxприсваивает каждому процессу уникальный номер, называемый идентификатором процесса (process ID).
Идентификатор процесса – это число, идентифицирующее каждый выполняющийся процесс. Увидеть идентификаторы процессов можно, например, с помощью команды ps.
Получив указание запустить программу (создать процесс), Linux выполняет его, делая точную копию программы, от которой это указание поступило. В простейшем случае, пользователь дает команду своей оболочке запустить программу. Оболочка посылает запрос на клонирование процесса ядру Linux.
Клонирование процессов, процессы init и exec
Клонирование или ветвление (fork) процесса – это операция создания дубликата существующего процесса. Все новые процессы вLinuxсоздаются с помощью механизма клонирования. При этом создается почти точная копия существующего процесса, включая окружение и все открытые процессом файлы. Единственное, что отличает дубликаты, – это флаг, обозначающий какой из процессов родительский, а какой – порождённый (дочерний).
Так как все процессы создаются подобным образом, то у них есть родительский процесс. Каждый выполняющийся в ОС Linux процесс может проследить свое происхождение в обратном порядке вплоть до init – прародителя всех процессов. Сам init, идентификатор процесса которого равен 1, является единственным процессом, запущенным непосредственно ядром Linux. Каждый процесс, создаваемый пользователем во время работы, имеет своим предком процесс оболочки, а родителем процесса оболочки является init.
После успешного ветвления процесса дочерний процесс вызывает функцию exec, чтобы преобразовать себя в тот процесс, который был запрошен пользователем. Вызов функции exec приводит только к замене выполняемой, программы, окружение нового процесса остается точной копией окружения своего родителя.
Стандартные ввод и вывод
Каждый вновь созданный процесс получает уже открытыми три «файла». Так как Linuxне делает различий между файлами и устройствами, открытый «файл» может быть настоящим файлом на диске или устройством, например, терминалом пользователя. Эти три открытых файла представляют собой стандартное устройство ввода(stdin),стандартное устройство вывода (stdout) и стандартное устройство вывода сообщений об ошибках (stderr). Все командыLinux, как и прикладные программы, получают информацию со стандартного устройства ввода и выводят информацию на стандартное устройство вывода. Все диагностические сообщения автоматически направляются на стандартное устройство вывода сообщений об ошибках.
Это всегда нужно помнить, потому что, например, чтобы отсортировать файл sales.dat и вывести результат на экран монитора не сохраняя результата сортировки в самом файле необходимо просто ввести команду:
#sort sales.dat
Её вводом будет не клавиатура (stdin), а файл sales.dat т.к. он указан после команды. Выводом же будет файл stdout (в нашем случае экран монитора), т.к. ничего дополнительно не оговаривается.
Пояснение
Команда sort, используемая без параметров, сортирует строки в текстовом файле, первым словом которых является число.
Когда пользователь регистрируется в системе, файлы стандартных устройств ввода, вывода и вывода сообщений об ошибках подключаются к его терминалу. Все запускаемые затем этим пользователем программы (создаваемые им процессы) получают доступ к его терминалу через эти три открытых файла. Виды терминалов, к которым будут подключены эти файлы, могут быть изменены в соответствии с потребностями конкретного пользователя.
Элементарные операции над процессами
В данной работе, для организации интерфейса ОС LINUXс пользователем используется командный интерпретаторshell, который идентичен своему аналогу в ОСUNIX. Поэтому, для выполнения контрольного задания, можно пользоваться такими командами какcat [файл] иls -F– для просмотра содержимого текстового файла и содержимого текущего каталога соответственно, т.к. в дальнейшем они больше упоминаться не будут.
Перенаправление ввода и вывода
Множество программ принимают информацию с терминала или клавиатуры и выводят ее на экран терминала. В Linuxввод с клавиатуры связан с чтением из файла под названиемstdin, а вывод на терминал – с выводом в файл под названиемstdout. Можно перенаправить ввод и вывод так, чтобы вместо ввода с терминала или вывода на терминал информация считывалась из файла или направлялась в файл.
Для перенаправления ввода команды или программы так, чтобы для ввода использовался файл, а не терминал применяется оператор <(символ «меньше»). Предположим, что нужно отправить файл с именемinfoпо электронной почте адресатуSasha. Вместо того чтобы вручную перепечатывать содержимое файла для командыmail, укажите этой команде использовать файлinfoв качестве входного (stdin):
#mail Sasha < info
Для перенаправления вывода программы в файл применяется оператор >(символ «больше»). Вместо выдачи на экран терминала, информация помещается в файл. При этом, если файл с таким именем уже был – его содержимое замещается, а если нет, то такой файл создаётся. Командаdateотображает на экране текущее время и дату. Чтобы сохранить текущее время и дату в файле с именемnow воспользуемся командой:
#date > now
Если нужно добавить или дописать информацию в конец существующего файла, используется двухсимвольный оператор >>. Для добавления текущей даты в файл с именемreport наберём в командной строке:
#date >> report
Рассмотрим в качестве примера ещё три команды:
#date >> sales_report
#sort < sales >> sales_report
(аналогично: #sort sales >> sales_report)
#mail Sasha Jack < sales_report
В первой строке примера вывод команды dateдописывается в файлsales_report. Во второй строке примера командаsortсчитывает ввод из файлаsales, а вывод добавляется к файлуsales_report. Последней строкой файлsales_reportотправляется пользователямSashaиJackпо электронной почте.