Операционные системы. Замятин А.В - 85 стр.

UptoLike

Составители: 

85
очень удобно избавляться от слишком обильного вывода некоторых
программ:
/home/larry# yes > /dev/null
Теперь на экран ничего не выводится. Однако и приглашение ко-
мандной оболочки также не возвращается. Это происходит потому, что
команда yes все еще работает и посылает свои сообщения, состоящие из
букв y на /dev/null. Уничтожить это задание также можно нажатием кла-
виш прерывания.
Допустим теперь, что вы хотите, чтобы команда yes продолжала
работать, но при этом и приглашение командной оболочки должно вер-
нуться на экран. Для этого можно команду yes перевести в фоновый ре-
жим, и она будет там работать, не общаясь с вами.
Один способ перевести процесс в фоновый режим приписать
символ « к концу команды. Пример:
/home/larry# yes > /dev/null &
\verb+[1] 164+
/home/larry#
Как видно, приглашение командной оболочки опять появилось.
Однако, что означает «[1] 164»? И действительно ли команда yes про-
должает работать?
Сообщение «[1]» представляет собой номер задания (job number)
для процесса yes. Командная оболочка присваивает номер задания каж-
дому исполняемому заданию. Поскольку yes является единственным
исполняемым заданием, ему присваивается номер 1. Число «164» явля-
ется идентификационным номером, соответствующим данному процес-
су (PID), и этот номер также дан процессу системой. Как мы увидим
дальше, к процессу можно обращаться, указывая оба этих номера.
Итак, теперь у нас есть процесс команды yes, работающий в фоне и
непрерывно посылающий поток из букв y на устройство /dev/null. Для
того, чтобы узнать статус этого процесса, нужно исполнить команду
jobs, которая является внутренней командой оболочки
/home/larry# jobs
[1]+ Running yes >/dev/null &-
/home/larry#
Мы видим, что эта программа действительно работает. Для того,
чтобы узнать статус задания, можно также воспользоваться командой
ps, как это было показано выше.