UNIX — универсальная среда программирования | страница 33



Каждый экземпляр запущенной программы называется процессом. Число, выдаваемое >shell в ответ на команду, введенную с >&, является номером процесса. Его можно использовать в других командах в качестве ссылки на данный экземпляр выполняемой программы.

Важно понимать различие между программами и процессами. Скажем, >wc — это программа, но каждый запуск программы >wc создает новый процесс. Если одновременно выполняется несколько экземпляров одной программы, то любой из них считается отдельным процессом с отличным от других номером.

Если конвейер завершается операцией >&

>$ pr ch * | lpr &

>6951 Номер процесса

>$

то все процессы этого конвейера начинают выполняться сразу, и >& относится ко всем программам, участвующим в конвейере. Однако выдается только номер процесса, относящийся к последней программе в конвейере. Команда

>$ wait

ожидает, пока не завершатся все процессы, запущенные с помощью >&. Если она не возвращается сразу, значит, у вас есть незавершенные команды. Прервать выполнение команд можно, нажав клавишу DELETE.

Можно использовать номер процесса, сообщаемый интерпретатором, для остановки процесса, инициированного операцией >&:

>$ kill 6944

Если вы забыли номер процесса, команда >ps выведет сообщение обо всех ваших процессах. В том случае, когда вам некогда, команда >kill 0 уничтожит все ваши процессы, за исключением начального процесса-интерпретатора. Если же вам интересно, что делают другие пользователи, команда >ps -ag сообщит обо всех выполняемых процессах. Приведем пример вывода:

>$ ps -ag

> PID TTY TIME CMD

>  36 со 6:29 /etc/cron

>6423 5  0:02 -sh

>6704 1  0:04 -sh

>6722 1  0:12 vi paper

>4430 2  0:03 -sh

>6612 7  0:03 -sh

>6628 7  1:13 rogue

>6643 2  0:02 write dmr 6949 4 0:01 login bimmler

>6952 5  0:08 pr ch1.1 ch1.2 ch1.3 ch1.4

>6951 5  0:03 lpr

>6959 5  0:02 ps -ag

>6844 1  0:02 write rob

>$

Здесь >PID — номер процесса; >TTY — терминал, связанный с процессом (как в команде >who); >TIME — затраченное время процессора в минутах и секундах, а в конце строки — выполняемая команда. Команда >ps — одна из тех команд, которые выполняются по- разному в различных версиях системы, так что вывод в вашей системе может иметь другой формат. Даже аргументы могут отличаться — см. в своем справочном руководстве страницу >ps(1).

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