Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №5 (Упр. процессами).doc
Скачиваний:
6
Добавлен:
21.11.2018
Размер:
116.74 Кб
Скачать

4.3. Утилита vmstat

Утилита vmstat также предоставляет информацию о деятельности процессов, памяти, ввода/вывода и процессора. Если необходимо, чтобы утилита обновляла информацию автоматически, можно выполнить команду vmstat nsec, где nsec это число секунд, которое устанавливает задержку перед следующим обновлением.

4.4. Утилита uptime

Чтобы быстро получить статистику нагрузки процессов на систему, можно выполнить команду uptime. Она показывает текущее время системы, как долго система работает с момента последней перезагрузки, сколько пользователей находится в настоящее время в системе и три средних значения нагрузки.

4.5. Утилита at

Утилита позволяет создавать очередь команд для выполнения в более позднее время. Например, чтобы выполнить утилиту создающую сводку использования диска, называемую du, в 8:40 вечера, можно выполнить команду:

at 20:40

Команда at выведет приглашение, такое как “at>”, где нужно ввести команду du

at> du –a /tmp/du.out

Здесь вывод du направлен в файл. После ввода команды, at снова выведет приглашение к вводу. Чтобы выйти, надо нажать комбинацию клавиш CTRL+D. Появится сообщение вида:

at> <EOT>

warning: commands will be executed using /bin/sh

job 1 at 2005-03-03

Чтобы проверить, что задание находится в очереди, выполните команду atq. Она покажет запланированные на данный момент задания очереди. Все они хранятся в каталоге /var/spool/at

Если необходимо отменить задание, то можно выполнить команду atrm. Для этого нужно будет использовать последовательный номер задания. Чтобы узнать номер задания выполните atq. Например, чтобы удалить задание с номером 1, надо выполнить atrm 1.

4.6. Использование crontab

Утилита crontab позволяет создавать и редактировать расписание повторяющихся задач. Для этого необходимо выполнить crontab –e. Спецификация задания имеет следующий формат:

minute(s) hour(s) day(s) month weekday <имя_пользователя> <команда> <аргумент(ы)>

Пример:

01 * * * * root /some/script

Эта строка определяет, что сценарий /some/script должен выполняться каждую первую минуту каждого часа, каждого дня, каждого месяца и каждого дня недели. Сценарий будет выполняться от имени пользователя root.

Теперь, ког

$ nice -n 19 dd if=/dev/cdrom of=~/mandriva1.iso

5. Запуск и обработка фоновых процессов: управление заданиями

Вы, наверное, заметили, что, после того, как вы ввели команду в Терминал'е, вам обычно нужно дождаться завершения ее работы, прежде чем shell вернет вам управление. Это значит, что вы запустили команду в приоритетном режиме. Однако, бывают случаи, когда это нежелательно. Допустим, например, что вы решили рекурсивно скопировать один большой каталог в другой. Вы также решили игнорировать ошибки, поэтому вы перенаправили поток ошибок в /dev/null:

cp -R images/ /shared/ 2>/dev/null

Выполнение такой команды может занять несколько минут пока она не выполнится полностью. У вас есть два варианта решения: первый - жестокий, подразумевающий остановку (убивание) команды, а затем повторное ее выполнение, но уже в более подходящее время. Для этого нажмите Ctrl-C: при этом процесс будет завершен, а вы вернетесь назад к строке приглашения. Допустим, вы хотите, чтобы команда выполнялась, а вы занимались чем-нибудь другим. Решением будет запуск процесса в фоновом режиме. Для этого нажмите Ctrl-Z, чтобы приостановить процесс:

$ cp -R images/ /shared/

2>/dev/null

# Нажмите сейчас C-z

[1]+ Stopped cp -R images/ /shared/ 2>/dev/null

$

и вы снова в строке приглашения. Процесс теперь находится в режиме ожидания, ожидая вашей команды для его повторного запуска (как это отмечено ключевым словом Stopped). Это как раз и есть то, что вам нужно, но уже в фоновом процессе. Введите bg (BackGround - фоновый) для получения желаемого результата:

$ bg

[1]+ cp -R images/ /shared/ 2>/dev/null &

$

При этом процесс продолжит свою работу, но уже как фоновая задача, как это отмечено знаком & (амперсанд) в конце строки. Затем вы вернетесь назад в строку приглашения и сможете продолжить работу. Процесс, который выполняется как фоновая задача, или в фоновом режиме, называется фоновым заданием.

Конечно, вы можете сразу запускать процессы как фоновые задачи, добавляя знак & в конце команды. Например, вы можете запустить команду копирования каталога в фоновом режиме, набрав:

$ cp -R images/ /shared/ 2>/dev/null &

Если хотите, вы также можете восстановить этот процесс в приоритетный режим и дождаться его завершения, набрав fg (ForeGround - приоритетный). Чтобы перевести его назад в фоновый режим, введите следующую последовательность Ctrl-Z, bg.

Таким способом вы можете запустить несколько заданий: каждой команде при этом будет присвоен номер задания. Команда shell'а jobs выводит список всех заданий, связанных с текущим shell'ом. Перед заданием ставится знак +, отмечающий последний процесс, запущенный в фоновом режиме. Для восстановления конкретного задания в приоритетный режим вы можете ввести команду fg <n>, где <n> - номер задания, например, fg 5.

Обратите внимание, что таким способом вы также можете приостанавливать или запускать полноэкранные приложения, такие как less или текстовый редактор Vi, и восстанавливать их в приоритетном режиме, когда вам это понадобится.