- Главная
- Информатика
- Лекция 4
Содержание
- 2. Лекция 4. Процессы в Linux. Команды для работы с процессами Понятие процесса в Linux Атрибуты процесса,
- 3. Понятие процесса в Linux Процесс можно определить как программу, находящуюся в состоянии исполнения. Кроме, исполняемого кода
- 4. Атрибуты процесса Каждый процесс в ОС Linux характеризуется следующим набором атрибутов: Идентификатор процесса (Process IDentifier -
- 5. Состояние процесса Процесс может в текущий момент находиться в одном из следующих состояний: • Runable (R)
- 6. Запуск процесса на переднем плане и в фоновом режиме При запуске программы из консоли обычным способом
- 7. Команда ps Команда ps выводит информацию о запущенных процессах. $ ps [ключи] Эта команда имеет, пожалуй,
- 8. Команда top Команда top отображает информацию о запущенных процессах и загрузке системы в режиме реального времени.
- 9. Команда at (1) Команда at предназначена для выполнения одной или нескольких команд в заданный момент времени
- 10. Команда at (2) $ echo 'ls > /home/user/test/attestfile' | at 12:45 warning: commands will be executed
- 11. Команда nohup Когда мы выходим из командной оболочки, она посылает всем запущенным из нее программам сигнал
- 12. Команды nice и renice Задать относительный приоритет некоторой команды при ее запуске можно с помощью команды
- 13. Сигналы (1) В Linux существует механизм оповещения процессов об асинхронных событиях, называемый сигналами. События могут быть
- 14. Сигналы (2)
- 16. Скачать презентацию
Слайд 2Лекция 4. Процессы в Linux. Команды для работы с процессами
Понятие процесса
Лекция 4. Процессы в Linux. Команды для работы с процессами
Понятие процесса
Атрибуты процесса, состояние процесса
Запуск процесса на переднем плане и в фоновом режиме
Команда ps
Команда top
Команда at
Команда nohup
Команды nice и renice
Сигналы. Команды kill и killall
Слайд 3Понятие процесса в Linux
Процесс можно определить как программу, находящуюся в состоянии исполнения.
Понятие процесса в Linux
Процесс можно определить как программу, находящуюся в состоянии исполнения.
Кроме, исполняемого кода каждый процесс содержит собственное адресное пространство, в котором содержатся данные процесса, а так же набор ресурсов, например, таких как открытые им файлы.
Linux, как и практически все современные операционные системы, является многозадачной операционной системой, т.е. позволяет выполнять много процессов одновременно. Операционная система позволяет имитировать запуск большего числа процессов, выделяя им процессорное время по очереди небольшими частями – т.н. квантами.
Каждый процесс может породить дополнительные процессы. При этом процесс, запустивший новый процесс, называется родительским, а новый процесс по отношению к создавшему его процессу называется дочерним. Процессы, порожденные одним и тем же родительским процессом, называются братьями (или сестрами).
В Linux реализована четкая иерархия процессов в системе. Корнем этой иерархии является процесс init имеет идентификатор, равный 1. От него порождаются все остальные процессы. Процесс init никогда не завершается.
Слайд 4Атрибуты процесса
Каждый процесс в ОС Linux характеризуется следующим набором атрибутов:
Идентификатор процесса (Process
Атрибуты процесса
Каждый процесс в ОС Linux характеризуется следующим набором атрибутов:
Идентификатор процесса (Process
Идентификатор родительского процесса (Parent PID - PPID).
Реальный и эффективный идентификаторы пользователя (UID, EUID) и группы (GID, EGID). Данные атрибуты процесса говорят о его принадлежности к конкретному пользователю и группе пользователей. Реальные идентификаторы совпадают с идентификаторами пользователя, который запустил процесс, и группы, к которой он принадлежит. Эффективные идентификаторы показывают, от имени какого пользователя был запущен процесс. Они могут не совпадать с реальными идентификаторами, если для запускаемой программы установлен бит SGID или SUID. Права доступа процесса к ресурсам операционной системы определяются эффективными идентификаторами. Для управления процессом используются реальные идентификаторы. Все идентификаторы передаются от родительского процесса к дочернему.
Приоритет (priority) и относительный приоритет (уступчивость) процесса (nice). Приоритет определяет количество процессорного времени, которое выделяется процессу для выполнения. Пользователь может изменять значение только относительного приоритета (nice), который является своеобразной поправкой к основному значению приоритета и может изменяться в диапазоне от -20 до 19. Здесь меньшее значение соответствует более высокому приоритету.
Слайд 5Состояние процесса
Процесс может в текущий момент находиться в одном из следующих состояний:
• Runable
Состояние процесса
Процесс может в текущий момент находиться в одном из следующих состояний:
• Runable
• Sleeping (S) – процесс находится в состоянии ожидания некоторого внешнего события (например, завершения операции ввода-вывода) и не выполняется. При получении сигнала процесс временно прерывает ожидание для обработки сигнала. Поэтому такие процессы можно завершить до окончания операции ввода-вывода.
• Uninterruptible (D) – состояние аналогично предыдущему с той разницей, что ожидание не прерывается для обработки сигналов. Такой процесс нельзя завершить до окончания операции ввода-вывода.
• Stopped (T) – процесс остановлен. Процесс переходит в это состояние когда получает соответствующий сигнал. Так же в этом состоянии находится процесс, если производится его отладка.
• Zombie (Z) – процесс-“зомби”. Этот процесс завершил свое выполнение и почти полностью выгружен из памяти. Единственная информация, которая хранится о данном процессе – код его завершения , значение которого может потребоваться родительскому процессу. После запроса кода завершения родительским процессом, процесс-“зомби” полностью удаляется из памяти.
Слайд 6Запуск процесса на переднем плане и в фоновом режиме
При запуске программы из
Запуск процесса на переднем плане и в фоновом режиме
При запуске программы из
Программа, запущенная в фоновом режиме (background) не может осуществлять интерактивное взаимодействие с пользователем через консоль, но ни в чем другом не ограничена.
Чтобы выполнить команду в фоновом режиме, после команды нужно поставить символ &.
$xeyes –center red &
[1] 2811
Для вывода информации о командах, запущенных в фоновом режиме, предназначена команда jobs:
$ jobs
[1]+ Running xeyes -center red &
Перевести команду из фонового режима на передний план можно с помощью команды fg.
$fg номер_задачи.
Для перевода команды с переднего плана в фоновый режим нужно нажать на клавиатуре Ctrl+Z (при этом процесс будет приостановлен) и ввести команду bg, которая продолжит выполнение процесса в фоновом режиме.
Слайд 7Команда ps
Команда ps выводит информацию о запущенных процессах.
$ ps [ключи]
Эта команда имеет,
Команда ps
Команда ps выводит информацию о запущенных процессах.
$ ps [ключи]
Эта команда имеет,
Если запустить команду без параметров, то она выведет список выполняющихся процессов, которые запущенны текущим пользователем и ассоциированы с текущим терминалом.
$ ps
PID TTY TIME CMD
2171 pts/0 00:00:00 bash
2191 pts/0 00:00:00 ps
Если мы хотим просмотреть список всех запущенных процессов, то нужно задать в команде ключ -A или -e.
Иерархию процессов отображает специальная команда pstree.
Слайд 8Команда top
Команда top отображает информацию о запущенных процессах и загрузке системы в
Команда top
Команда top отображает информацию о запущенных процессах и загрузке системы в
$top [ключи]
При выполнении top в верхней части окна отображается текущее время, время, прошедшее с момента запуска системы, число пользователей в системе, число запущенных процессов и число процессов, находящихся в разных состояниях, данные об использовании ЦПУ, памяти и свопа.
В утилите top можно вводить команды с клавиатуры в интерактивном режиме.
h - отображение справки по работе с программой,
k - отправка сигнала процессу.
M - сортировать процессы по объёму занятой ими памяти.
u - вывести процессы заданного пользователя, имя которого будет запрошено командой.
r - эта команда используется для изменения динамического приоритета выбранного процесса.
q - завершение команды
Слайд 9Команда at (1)
Команда at предназначена для выполнения одной или нескольких команд в
Команда at (1)
Команда at предназначена для выполнения одной или нескольких команд в
$at [ключи] время
Команда at читает список выполняющихся команд из стандартного потока ввода или из указанного файла. Если команды вводятся пользователем с клавиатуры, то после завершения ввода нужно нажать Ctrl+D.
Введенные команды будут выполнены однократно в указанное время.
Время может задаваться в различных форматах.
Простейший формат – HH:MM, например – 13:15. Так же при задании времени могут использоваться слова noon, midnight и приставки AM и PM для указания времени дня. Кроме времени может указываться дата выполнения команд.
Ключами команды могут быть:
-m – отправить пользователю письмо по электронной почте после завершения выполнения команд.
-f файл – считать команды из указанного файла.
При использовании команды at следует помнить, что запускаемые ей команды будут выполняться без привязки к терминалу и графической среде.
Слайд 10Команда at (2)
$ echo 'ls > /home/user/test/attestfile' | at 12:45
warning: commands will
Команда at (2)
$ echo 'ls > /home/user/test/attestfile' | at 12:45
warning: commands will
job 6 at Wed Apr 13 12:45:00 2011
$ date
Срд Апр 13 12:42:19 MSD 2011
$ cat /home/user/test/attestfile
cat: /home/user/test/attestfile: Нет такого файла или
каталога
$ date
Срд Апр 13 12:45:12 MSD 2011
$ cat /home/user/test/attestfile
attestfile
myscr
test2
testtextfile
Слайд 11Команда nohup
Когда мы выходим из командной оболочки, она посылает всем запущенным из
Команда nohup
Когда мы выходим из командной оболочки, она посылает всем запущенным из
$ nohup команда [ключи] &
Если стандартный поток ввода команды связан с терминалом, то он перенаправляется на устройство /dev/null, а стандартный вывод, связанный с терминалом, направляется в файл nohup.out, расположенный в домашнем каталоге пользователя.
Слайд 12Команды nice и renice
Задать относительный приоритет некоторой команды при ее запуске можно
Команды nice и renice
Задать относительный приоритет некоторой команды при ее запуске можно
$ nice [ключи] [команда [аргументы_команды]]
Основным ключом команды nice является ключ -n, который задает значение относительного приоритета запускаемой команды, по умолчанию используется значение 10.
$ nice -n 5 egrep –f pattern_file text_file
Команда renice позволяет изменить относительный приоритет уже работающего процесса.
$ renice отн_приоритет [ключи]
Ключи команды задают процессы, для которых изменяется относительный приоритет. Возможно три варианта:
-p ID … - процесс задается одним или несколькими идентификаторами процесса,
-g ID … - процесс задается одним или несколькими идентификаторами групп пользователей,
-u username … - процесс задается одним или несколькими именами пользователей.
Слайд 13Сигналы (1)
В Linux существует механизм оповещения процессов об асинхронных событиях, называемый сигналами.
Сигналы (1)
В Linux существует механизм оповещения процессов об асинхронных событиях, называемый сигналами.
Когда процесс получает сигнал, он должен его обработать одним из трех способов:
• просто игнорировать сигнал,
• захватить и обработать сигнал,
• выполнить действие по умолчанию.
Передать процессу сигнал может или операционная система, или другая программа, или пользователь с помощью специальной команды.
Слайд 14Сигналы (2)
Сигналы (2)