[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]

Руководство пользователя: Операционная система и устройства


Обзор процессов

Программа или команда, фактически выполняемая на компьютере, называется процессом. Структура процессов иерархическая. Процесс, запущенный программой или командой, называется родительским; порожденный им процесс - дочерним. У родительского процесса может быть несколько дочерних процессов, однако у каждого дочернего процесса есть только один родительский процесс.

Каждому запускаемому процессу присваивается идентификационный номер (ИД процесса). Если вы несколько раз запускаете одну и ту же программу, то каждый раз ей будет присваиваться уникальный ИД процесса.

После запуска процесс начинает использовать различные системные ресурсы. Если процессов несколько, то встроенный в операционную систему планировщик распределяет время процессора между ними на основании приоритетов процессов. Эти приоритеты можно изменить командами nice и renice.

Примечание: Повысить приоритет процесса может только пользователь с правами доступа root. Пользователь может понизить приоритет запускаемого процесса командой nice, а уже запущенного процесса - командой renice.

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

Интерактивные и фоновые процессы

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

Демоны

Демоны - это процессы, выполняемые автономно. Они постоянно работают в фоновом режиме.Демоны обычно запускаются одновременно с системой и завершают свою работу вместе с ней. Демон обеспечивает работу системных служб и доступен в каждый момент времени нескольким задачам и пользователям. Демоны запускаются пользователем root или оболочкой root и могут быть завершены только пользователем root. Например, демон qdaemon предоставляет доступ к системным ресурсам (принтерам и т.п.) Другой пример часто используемого демона - sendmail.

Процесс-зомби

Процесс-зомби - это неактивный процесс, который по-прежнему находится в таблице процессов (иными словами, он сохраняет свой ИД процесса). Ему не выделяется системная память. Процессы-зомби - это процессы, которые были прерваны или завершены, но продолжают существовать в таблице процессов до тех пор, не будет завершен родительский процесс или не произойдет перезагрузка системы. Процессы-зомби отмечены словом <defunct> в списке, выдаваемом командой ps.

Запуск процесса

Для запуска интерактивного процесса на дисплейной станции введите имя программы или команды в командной строке. После запуска интерактивного процесса он будет выдавать сообщения и принимать ваши ответы с дисплейной станции до тех пор, пока не будет завершен. Это означает, что вы не сможете вводить другие команды и выполнять какие-либо действия на этой станции до тех пор, пока процесс не будет завершен или вы не прервете его.

Каждый пользователь может одновременно запустить не более 40 процессов.

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

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

$ Имя_команды

Нажмите Enter.

Как запустить фоновый процесс

Для запуска процесса в фоновом режиме введите команду со всеми необходимыми параметрами и флагами, поставив в конце амперсанд ( &):

и нажав Enter.

$ Имя_команды&

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

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

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

Примечание: В некоторых случаях порядок вывода процесса в фоновом режиме может быть несколько иным, чем в интерактивном. Обеспечить правильный порядок вывода независимо от режима выполнения процесса можно с помощью процедуры fflush.

Во время выполнения фонового процесса его состояние можно узнать с помощью команды ps.

Просмотр списка запущенных процессов (команда ps)

Если система работает, то в ней выполняются процессы. С помощью команды ps вы можете выяснить, какие процессы активны, и просмотреть информацию о них.

Команда ps

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

Для просмотра списка процессов, выполняемых в системе, введите в командной строке:

ps -ef

Нажмите Enter.

Появится приблизительно следующий список:

    ПОЛЬЗ. PID  PPID   C    STIME    TTY  ВРЕМЯ CMD
    root     1     0   0   28 июня     -  3:23 /etc/init
    root  1588  6963   0   28 июня     -  0:02 /usr/etc/biod 6
    root  2280     1   0   28 июня     -  1:39 /etc/syncd 60
    mary  2413 16998   2 07:57:30      -  0:05 aixterm 
    mary 11632 16998   0 07:57:31  lft/1  0:01 xbiff 
    mary 16260  2413   1 07:57:35  pts/1  0:00 /bin/ksh 
    mary 16469     1   0 07:57:12  lft/1  0:00 ksh /usr/lpp/X11/bin/xinit 
    mary 19402 16260  20 09:37:21  pts/1  0:00 ps -ef 

Ниже приведено описание содержимого колонок:

ПОЛЬЗ. Имя пользователя
PID ИД процесса
PPID ИД родительского процесса
C Время обработки процесса в CPU
STIME Время запуска процесса
TTY Управляющая рабочая станция процесса
ВРЕМЯ Общее время выполнения процесса
CMD Команда

В предыдущем примере ИД процесса, запущенного командой ps -ef, - 19402. ИД родительского процесса - 16260, команда /bin/ksh.

Если список не умещается на экране, то будет показана только его нижняя часть. Во избежание этого введите команду ps в конвейере с командой pg. Введите в командной строке:

ps -ef | pg

Нажмите Enter.

Для просмотра состояния активных процессов системы введите:

ps gv

Нажмите Enter.

Будет выдана статистическая информация о каждом активном процессе. Она будет выглядеть примерно следующим образом:

   PID    TTY STAT ВРЕМЯ PGIN  РАЗМЕР RSS   LIM  TSIZ   TRS %CPU %MEM КОМАНДА
     0      - A     0:44    7     8     8    xx     0     0  0.0  0.0 swapper
     1      - A     1:29  518   244   140    xx    21    24  0.1  1.0 /etc/init
   771      - A     1:22    0    16    16    xx     0     0  0.0  0.0 kproc
  1028      - A     0:00   10    16     8    xx     0     0  0.0  0.0 kproc
  1503      - A     0:33  127    16     8    xx     0     0  0.0  0.0 kproc
  1679      - A     1:03  282   192    12 32768   130     0  0.7  0.0 pcidossvr
  2089      - A     0:22  918    72    28    xx     1     4  0.0  0.0 /etc/sync
  2784      - A     0:00    9    16     8    xx     0     0  0.0  0.0 kproc
  2816      - A     5:59 6436  2664   616     8   852   156  0.4  4.0 /usr/lpp/
  3115      - A     0:27  955   264   128    xx    39    36  0.0  1.0 /usr/lib/
  3451      - A     0:00    0    16     8    xx     0     0  0.0  0.0 kproc
  3812      - A     0:00   21   128    12 32768    34     0  0.0  0.0 usr/lib/lpd/
  3970      - A     0:00    0    16     8    xx     0     0  0.0  0.0 kproc
  4267      - A     0:01  169   132    72 32768    16    16  0.0  0.0 /etc/sysl
  4514  lft/0 A     0:00   60   200    72    xx    39    60  0.0  0.0 /etc/gett
  4776  pts/3 A     0:02  250   108   280     8   303   268  0.0  2.0 -ksh 
  5050      - A     0:09 1200   424   132 32768   243    56  0.0  1.0 /usr/sbin
  5322      - A     0:27 1299   156   192    xx    24    24  0.0  1.0 /etc/cron
  5590      - A     0:00    2   100    12 32768    11     0  0.0  0.0 /etc/writ
  5749      - A     0:00    0   208    12    xx    13     0  0.0  0.0 /usr/lpp/
  6111      - T     0:00   66   108    12 32768    47     0  0.0  0.0 /usr/lpp/

Полный синтаксис приведен в описании команды ps в книге AIX 5L Version 5.1 Commands Reference.

Вы можете также воспользоваться командами smit process и smit monitors.

Установка начального приоритета процесса (команда nice)

Вы можете уменьшить начальный приоритет процесса по сравнению с запланированным значением с помощью команды nice.

Примечание: Для повышения приоритета процесса необходимы права доступа root.

Команда nice

Для того чтобы задать начальный приоритет процесса, введите:

nice -n Число Команда

где Число - число от 0 до 39 (39 - самый низкий приоритет). Чем больше число, тем ниже приоритет. Ноль означает, что процесс необходимо запустить с запланированным приоритетом. Команда - это запускаемая команда с флагами и параметрами.

Дополнительная информация и полный синтаксис приведены в описании команды nice в справочнике AIX 5L Version 5.1 Commands Reference.

Для выполнения этой задачи можно также воспользоваться командой smit nice.

Изменение приоритета выполняемого процесса (команда renice)

Вы можете изменить приоритет уже выполняемого процесса с помощью команды renice из командной строки. Эта команда изменяет приоритет процесса, заданный командой nice.

Примечание: Для повышения приоритета процесса или изменения приоритета процесса, запущенного не вами, необходимы права доступа root.

Командная строка

Для того чтобы изменить приоритет выполняемого процесса, введите:

renice Приоритет -p
ИД_процесса

где Приоритет - число от -20 до 20. Чем больше число, тем ниже приоритет. Ноль означает, что процесс необходимо запустить с запланированным приоритетом. ИД_процесса - это ИД процесса, приоритет которого вы хотите изменить.

Для выполнения этой задачи можно также воспользоваться командой smit renice.

Отмена интерактивного процесса

Если вы запустили интерактивный процесс, а затем решили его прервать, нажмите клавишу INTERRUPT. Обычно это клавиши Ctrl-C или Ctrl-Backspace. Комбинация клавиш, выполняющая функцию INTERRUPT, указана в разделе Просмотр функций клавиш терминала (команда stty).

Примечание: С помощью INTERRUPT (Ctrl-C) нельзя отменить фоновые процессы. Для отмены фонового процесса воспользуйтесь командой kill.

Большинство простых команд не слишком подходят в качестве примеров для демонстрации прерывания процесса - они выполняются столь быстро, что вы просто не успеете их прервать. В этом разделе выбрана команда, выполнение которой занимает определенное время: find / -type f. Эта команда выдает перечень путей ко всем файлам системы. Вы можете не знать, как работает команда find - она взята здесь только для примера.

В следующем примере команда find запускает процесс. Через несколько секунд после запуска вы можете прервать процесс, нажав клавишу INTERRUPT:

$ find / -type f
/usr/sbin/acct/lastlogin
/usr/sbin/acct/prctmp
/usr/sbin/acct/prdaily
/usr/sbin/acct/runacct
/usr/sbin/acct/sdisk
/usr/sbin/acct/shutacct INTERRUPT (Ctrl-C)
$ _

На экране вновь появится системное приглашение. Теперь вы можете ввести другую команду.

Остановка интерактивного процесса

Вы можете приостановить интерактивный процесс, не удаляя его ИД из таблицы процессов. Для этого нажмите клавиши Ctrl-Z.

Примечание: Сочетание Ctrl-Z работает в оболочках Korn (ksh) и C (csh), но не в оболочке Bourne (bsh).

Возобновление остановленного процесса

Эта процедура описывает, как возобновить процесс, приостановленный нажатием клавиш Ctrl-Z.

Примечание: Сочетание Ctrl-Z работает в оболочках Korn (ksh) и C (csh), но не в оболочке Bourne (bsh). Возобновить приостановленный процесс может только запустивший его пользователь или пользователь root.
  1. Для просмотра списка процессов, запущенных или приостановленных, но не удаленных, введите:

    ps -ef
    

    Эту команду можно объединить в конвейер с командой grep для просмотра только нужных вам процессов. Например, если вы хотите возобновить сеанс vi, введите:

    ps -ef | grep vi
    

    Нажмите Enter. Эта команда выдаст только те строки из списка команды ps, которые содержат слово vi. Вывод будет выглядеть примерно так:

    UID    PID   PPID   C      STIME       TTY  ВРЕМЯ КОМАНДА
    root   1234  13682  0      00:59:53    -    0:01  vi test
    root  14277  13682  1      01:00:34    -    0:00  grep vi
    
  2. В выводе команды ps найдите процесс, который вы хотите возобновить, и запишите его ИД. В данном примере ИД равен 1234.
  3. Для отправки сигнала CONTINUE (продолжить) приостановленному процессу введите:

    kill -19 1234
    

    Вместо 1234 укажите ИД нужного процесса. Флаг -19 означает сигнал CONTINUE. Эта команда возобновляет процесс в фоновом режиме. Если процесс можно оставить фоновым, то процедура окончена. Если же процесс необходимо сделать интерактивным (так обычно и поступают с сеансами vi), перейдите к следующему шагу.

  4. Для перевода процесса в интерактивный режим введите:

    fg 1234
    

    Вместо 1234 укажите ИД нужного процесса. Теперь процесс будет выполняться в интерактивном режиме. (Вы работаете с сеансом редактора vi).

Планирование запуска процесса (команда at)

Вы можете запланировать запуск процесса как пакетного в заданное время. Команды at и smit позволяют ввести имена команд, которые должны быть выполнены в будущем, и указать, когда именно следует выполнить эти команды.

Примечание: Доступ к команде at контролируют файлы /var/adm/cron/at.allow и /var/adm/cron/at.deny. Пользователь root может создавать, редактировать и удалять эти файлы. Записи в них - это имена пользователей, по одному имени на строку. Ниже приведен пример файла at.allow:

root
nick
dee
sarah

Если файл at.allow существует, то применять команду at могут только указанные в нем пользователи. Системный администратор может запретить пользователю применять команду at, указав его имя в файле at.deny. Если существует только файл at.deny, то команду at могут применять все пользователи, кроме тех, которые указаны в этом файле.

Команду at нельзя применять в следующих случаях:

Если файл at.allow не существует, а файл at.deny также не существует или пуст, то запустить задание командой at может только пользователь root.

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

Команда at

Например, если ваш ИД пользователя - joyce и вы хотите запустить сценарий WorkReport в полночь, выполните следующие действия:

  1. Введите время, когда вы хотите запустить процесс.

    at midnight
    
  2. Введите имена запускаемых программ, нажимая Enter после каждого имени. После последнего имени введите символ конца файла (Ctrl-D), сигнализируя об окончании списка.

    WorkReport^D
    

После нажатия Ctrl-D появится примерно следующая информация:

Время запуска задания joyce.741502800.a : пятница, 6 июля 1994 г. 00:00:00

Программе WorkReport будет присвоен номер задания joyce.741502800.a; она будет запущена в полночь 6 июля.

Для просмотра списка программ, запланированных для запуска в будущем, введите:

at -l

Появится приблизительно следующий список:

joyce.741502800.a      пятница, 6 июля 1994 г. 00:00:00

Для отмены запланированного запуска программы сначала просмотрите номера заданий, связанные с программами, командой at -l. Выяснив номер задания программы, которую вы хотите отменить, введите:

at -r joyce.741502800.a

Будет отменено задание joyce.741502800.a.

Полный синтаксис приведен в описании команды at в книге AIX 5L Version 5.1 Commands Reference.

Для выполнения задачи можно также воспользоваться командами smit at и smit sjat.

Просмотр списка запланированных процессов (Команды at и atq)

Вы можете просмотреть список запланированных процессов, указав флаг -l в команде at или введя команду atq.

Эти команды практически эквиваленты, однако команда atq может упорядочить процессы по моментам времени, когда вводилась команда at, и показать только номера процессов в очереди.

Вы можете просмотреть список запланированных процессов следующим образом:

Ограничения на применение команды at приведены в Примечании.

Команда at

Для просмотра списка запланированных процессов введите:

at -l

Эта команда выдает список запланированных процессов в очереди. Если вы пользователь root, то команда перечислит все запланированные процессы для всех пользователей. Полный синтаксис приведен в справке по команде at.

Команда atq

Для просмотра списка запланированных процессов в очереди введите:

atq

Если вы пользователь root, то вы можете просмотреть запланированные процессы в очереди конкретного пользователя, введя:

atq Имя_пользователя

Для просмотра количества запланированных процессов в очереди введите:

atq -n

Удаление процесса из плана (Команда at)

Вы можете удалить запланированный процесс с помощью команды at с флагом -r. Ограничения на применение команды at приведены в Примечании.

Командная строка

  1. Для удаления запланированного процесса необходимо знать его номер. Узнать номер можно с помощью команды at -l или команды atq. Подробные сведения приведены в разделе Просмотр списка запланированных процессов (Команды at и atq).
  2. Выяснив номер процесса, удаляемого из плана, введите:

    at -r Номер_процесса
    

Для выполнения этой задачи можно также воспользоваться командой smit rmat.

Удаление фонового процесса (команда kill)

Если прервать интерактивный процесс нажатием клавиши INTERRUPT не удалось, или если после запуска фонового процесса вы решили его прервать, то отменить процесс можно командой kill. Перед применением команды kill необходимо узнать ИД (номер) процесса. Общий формат команды kill следующий:

kill ИД_процесса

Примечание: Удалить процесс может только запустивший его пользователь или пользователь root. По умолчанию команда kill отправляет процессу сигнал -15 (SIGTERM).

Команда kill

  1. С помощью команды ps определите ИД процесса, который вы хотите удалить. Эту команду можно объединить в конвейер с командой grep для просмотра только нужных вам процессов. Например, если вы хотите узнать ИД процесса сеанса vi, введите:

    ps -l | grep vi
    
  2. Пусть команда find выполняется в фоновом режиме. Затем вы решили прервать процесс. Введите команду ps для просмотра списка номеров процессов.

    $ find / -type f > dir.paths  &
    [1]    21593
    $ ps
       PID   TTY  ВРЕМЯ КОМАНДА
      1627  pts3  0:00  ps
      5461  pts3  0:00  ksh
     17565  pts3  0:00  -ksh
     21593  pts3  0:00  find / -type f
    $ kill 21593
    $ ps
       PID   TTY  ВРЕМЯ КОМАНДА
      1627  pts3  0:00  ps
      5461  pts3  0:00  ksh
     17565  pts3  0:00  -ksh
    [1]  +  Завершено 21593     find  /  -type f > dir.paths  &
    

    Команда kill 21593 завершила фоновый процесс find, и вторая команда ps не возвратила информацию о состоянии процесса номер 21593. Система не выдаст сообщения о завершении процесса, пока вы не введете следующую команду (причем команду, отличную от cd).

    Команда kill позволяет отменять фоновые процессы. Необходимость в этом возникает, когда процесс ошибочно переведен в фоновый режим или выполняется слишком долго.

    Примечания:
    1. При удалении родительского процесса все его дочерние процессы также будут удалены.
    2. Для удаления процесса-зомби необходимо удалить его родительский процесс.

Полный синтаксис приведен в описании команды kill в книге AIX 5L Version 5.1 Commands Reference.

Для выполнения этой задачи можно также воспользоваться командой smit kill.

Связанная информация

Глава 3, Команды и процессы

Обзор команд

Глава 11, Оболочки

Команды оболочки Korn (POSIX)

Оболочка Bourne

Оболочка C


[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]