Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процессы_Практическая работа__.doc
Скачиваний:
2
Добавлен:
25.08.2019
Размер:
97.79 Кб
Скачать

Практическая работа

Тема: «Процессы в Ubuntu»

Цель:

Порядок выполнения:

  1. Работа в консоли – описать выполняемые действия

  2. Работа с процессами, команда ps – описать выполняемые действия

  3. nice-фактор – описать выполняемые действия

  4. Сигналы - описать выполняемые действия

  5. Задания (jobs), команды jobs, fg, bg, strong>nohup, и top – описать выполняемые действия

Указания к выполнению:

1. Щелкаем правой кнопкой на нижней панели и выбираем пункт “Добавить на панель…”, ищем апплет “Системный монитор” и добавляем его кнопкой “Добавить” или перетаскиванием на панель.

Щелкнув правой кнопкой по нему и выбрав пункт “Параметры” можно настроить несколько графиков для отображения активности процессора, памяти, сети, жестких дисков и так далее, таким образом вы всегда будете видеть как на ладони – чем занимается ваш компьютер.

На этом преимущества этого апплета не заканчиваются: щелчок по нему лекой кнопки мыши вызывает запуск “Системного монитора Gnome”, который является аналогом “Диспетчера задач” Windows. Точнее, правильнее было бы сказать, что это диспетчер задач является его аналогом, т.к. функциональность “Системного монитора Gnome” намного выше. Чтобы в списке процессов отображались все процессы, а не только работающие от имени текущего пользователя, необходимо в меню “Вид” выбрать соответствующий пункт. При попытке завершения “чужого” процесса у вас попросят ввести пароль.

2. Чтобы перейти в консоль, нажмите CTRL+ALT+F1 – вы попадете в первую консоль, CTRL+ALT+F2 – во вторую и т.д. Графические консоли обычно начинаются с 7 или 8 – так вы сможете вернуться в графику. Первое, что необходимо, это войти в систему, введя свои имя и пароль. Теперь собственно просмотр процессов:

ps

Для информации (не выполнять)

Для просмотра процессов всех пользователей:

ps -A

Для поиска программы в списке, для примера “skype”:

ps -A | grep "skype"

Во всех этих списках вас должен интересовать только первый столбец с цифрами – это идентификационный номер процесса. Передав его команде “kill” можно завершить процесс:

sudo kill 1111

Где “1111″ – ID процесса. Утилиту kill можно вызвать с параметром “-9″, в этом случае она не будет передавать процессу запрос “завершитесь, пожалуйста”, как в первом случае, а просто убьет его без запроса. Зачастую избавится от зависших процессов можно избавиться только так. Например:

sudo kill -9 1111

Кроме того, существует также утилита killall, которая убивает процесс не по номеру, а по его имени, но использование это утилиты будет уместным не всегда, т.к. она убивает ВСЕ процессы с указанным именем (а их может быть несколько). Однако для нашего примера со skype это будет хороший вариант:

sudo killall skype

Для информации (не выполнять)

Процесс init является основным (родительским) процессом с идентификатором 1. Это первый процесс к которому имеет доступ системный администратор. Система Linux работает до тех пор пока “жив” процесс init . Получив управление, init выполняет алгоритм описанный в конфигурационном файле /etc/inittab . В результате работы init запускаются скрипты собранные  в директории /etc/init.d/ .

По команде ps aux можно увидеть достаточно обширный объем информации. Расшифровка столбцов следующая:

USER - владелец процесса PID - PID процесса %CPU - процент использования процессора. Это время использования процессора деленное на общее время существования процесса. %MEM - процент использования физической оперативной памяти. VSZ - объем виртуальной памяти выделенной процессу (в Килобайтах) RSS - объем физической оперативной памяти выделенной процессу (в Килобайтах) TTY - к какому терминалу “привязан” процесс STAT - статус (состояние) процесса. R - выполнение, S - ожидание, T - остановлен, Z - “зомби” START - время когда был запущен процесс TIME - количество процессорного времени, которое брал себе процесс. Обычно там нули или малое число (0:00 - 0:09). Если число большое, то процесс загружает процессор и следует проверить все ли с ним в порядке. COMMAND - имя команды. Какой код был выполнен во время исполнения функции exec().

Чтобы увидеть информацию о nice-факторе

необходимо выполнить команду ps lax:

$ ps lax F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 1 1000 2760 1 20 0 17928 5512 poll_s Ss ? 0:01 gnome-screensaver 0 1000 5859 3543 20 0 6292 3512 wait Ss pts/2 0:00 bash 0 1000 12275 5859 20 0 3752 1564 wait S+ pts/2 0:00 man ps

Особый интерес для нас предоставляют следующие столбцы:

PPID - отображен PID родительского процесса. Например для первой строки примера PPID равен 1, значит родительским для этого процесса является процесс init. Процесс из третьей строки является дочерним процесса из второй строки и т.д. NI - значение nice-фактора. PRI - приоритет процесса.

Выше уже упоминалось о nice-факторе как параметре который влияет на приоритет процесса. Чем выше число в столбце PRI тем ниже приоритет процесса. Пользователи могут изменить приоритет процесса при помощи изменения nice-фактора. Для этого существуют две команды: nice и renice. Диапазон значений nice-фактора невелик: от -20 до 19. Когда создается дочерний процесс, то он наследует nice-фактор своего предка. По умолчанию большинство пользовательских процессов имеют nice-фактор 0, так как именно такой nice-фактор установлен для процесса init. Чтобы изменить nice-фактор запускаемого процесса используют команду nice: $ nice -n 5 sleep 30 &

$ ps lax | grep sleep F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 0 1000 3567 3543 20 0 6292 3528 wait Ss pts/0 0:00 bash 0 1000 13098 3567 25 5 2952 628 hrtime SN pts/0 0:00 sleep 30

Синтаксис команды простой: через ключ -n мы передаем значение приращения nice-фактора, а затем идет команда для которой будет устанавливаться новый nice-фактор. Речь идет именно о приращении, так как реальный nice-фактор нового процесса будет равен nice-фактору родительского процесса сложенному с числом передаваемым команде nice. В приведенном выше примере nice-фактор родительского процесса (оболочки bash) равен нулю, значит nice-фактор дочернего будет 0+5=5, что мы и видим на результатах.

Обычные пользователи могут только увеличивать nice-фактор, но не могут его уменьшать. Сделано это для того, чтобы пользователи не смогли создавать высокоприоритетные процессы. Если от имени пользователя выполнить команду nice -n -5 sleep 30 &, получим сообщение об ошибке. Уменьшать nice-фактор может только пользователь root.

Если необходимо изменить nice-фактор уже запущенного процесса, то используют команду renice. Например:

$ renice 14 13229 13229: старый приоритет 10, новый приоритет 14

где 13229 это PID процесса для которого меняется nice-фактор. Из примера, также видно, что число 14 это уже не приращение, а просто новое значение nice-фактора.