Выполнение, остановка и повторный запуск процессов

В этом подразделе описывается:

- как запустить команду в определенное время с помощью команд batch и at;

- как получить информацию о состоянии процесса;

- как завершить активный процесс;

- как вновь запустить остановленный процесс;

- как превести процесс из оперативного режима в фоновый режим и наоборот.

Команды batch и at позволяют вам определять время запуска команды или

последовательности команд. При помощи команды batch система определяет u1074 время

запуска команды, вы это можете определить с помощью команды at. Обе команды

ожидают ввод со стандартного ввода (терминала); список команд, вводимых с терминала,

должен завершаться нажатием клавиши ^d (одновременное нажатие клавиши Ctrl и

клавиши d).

Команда batchочень полезна, если вы запускаете процесс или программу, которые

занимают много системного времени. Команда batch представляет системе задание

(содержащее последовательность команд для выполнения). Задание ставится в очередь и

запускается, как только у системы появляется возможность. Это позволяет системе

быстро отвечать на запросы других пользователей. Общий формат команды batch:

batch

первая_команда

.

.

.

последняя_команда

<^d>

Если запускается только одна команда, то ее можно ввести в одной командной

строке:

batchкоманда

В следующем примере batch используется для выполнения команды grep в

согласованное время. Команда grep осуществляет поиск всех файлов в текущем каталоге

и перенаправляет вывод в файл dol.file.

$ batch

grep dollar * > dol.file

<^d>

job 155223141.b at Sun Dec 11:14:54 2000

$

После того как вы дадите задание batch, система выдаст ответ, в котором даны

номер задания, дата и время. Номер задания не то же самое, что номер процесса, который

система генерирует, когда вы запускаете команду в фоновом режиме.

Команда atпозволяет вам указывать точное время выполнения команд. Общий

фомат команды at следующий:

at time

первая_команда

. . .

последняя_команда

<^d>

Аргумент time состоит из времени дня и даты, если дата не сегодняшняя.

В следующем примере показано, как использовать команду at для посылки

сообщения happy birthday пользователю с регистрационным именем chief:

$ at 8:15am Feb 27

banner happy birthday | mail chief

<^d>

$

Обратите внимание, что команда at подобно команде batch выдает ответ с номером

задания, датой и временем.

Если вы не хотите, чтобы команды, находящиеся в данный момент в очереди

заданий batch или at были выполнены, то можете удалить их из очереди. Для этого

воспользуйтесь опцией -r в команде at, указав ее с номером задания. Общий формат

такой команды:

at-r номер_задания

Например, чтобы удалить предыдущее задание at, введите:

$ at -r 453400603.a

Если _________вы забыли номер задания, то команда:

$ at -l

выведет список текущих заданий в очереди batch или at, как показано на следующем

экране:

$ at -l

user mylogin 168302040.a at Sat Nov 25 13:00:00 2000

user mylogin 453400603.a at Fri Feb 24 08:15:00 2000

$

Таким образом, команда at выполняет команды в указанное время. Вы можете

использовать от одной до 4-х цифр и буквосочетания "am" и "pm", чтобы указать время.

Чтобы указать дату, задайте имя месяца и вслед за ним число. Если задание должно быть

выполнено сегодня, то дату вводить не надо.

Пример

at 08:15am Feb 27

at 5:14pm Sept 24

Команда psдает вам состояние всех процессов, запущенных на данный момент.

Например, вы можете использовать команду ps, чтобы просмотреть состояние всех

процессов, которые запущены в фоновом режиме, применив символ &.

В следующем подпункте обсуждается вопрос, как применить номер PID

(идентификатор процесса), чтобы остановить выполнение команды. PID является

уникальным номером, который система UNIX назначает каждому активному процессу.

В следующем примере команда grep запускается в фоновом режиме и затем

выдается команда ps. Система сообщает в ответ номер идентификации процесса (PID) и

номер терминала (TTY). Она также выдает время выполнения каждого процесса (TIME)

и имя команды, которая выполняется (COMMAND):

$ grep word * > temp &

$

$ ps

PID TTY TIME COMD

28124 tty10 0:00 sh

28223 tty10 0:04 grep

28224 tty10 0:00 ps

$

Обратите внимание, на экране отображен номер PID для команды grep так же, как и

для всех других запущенных процессов: для самой команды ps и команды sh, которая

была запущена во время вашей регистрации.

Вы можете приостановить и вновь запустить программу, если в вашей системе

предусмотрена функция управления заданиями. Команда jobs выдает список текущих

фоновых процессов, запущенных или приостановленных. Команда jobs дополнительно к

PID распечатывает идентификатор задания (JID) и имя задания. Чтобы вновь запустить

приостановленное задание, либо возобновить фоновый процесс в оперативном режиме,

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

команду запуска или останова процесса. Если вы введете:

jobs

то на экране появится следующая информация:

[JID] - Stopped (signal) <имя задания>

или

[JID] + Running <имя задания>

Команда kill завершает _________активные процессы в фоновом режиме и команда