С вашим терминалом и оболочкой все в порядке. По умолчанию ps
показывает процессы с тем же эффективным идентификатором пользователя, что и пользователь, выполняющий их, и связанные с тем же терминалом. Обычно это приводит к тому, что только два процесса отображают :текущую оболочку и саму ps
. Если с текущим терминалом связаны какие-либо фоновые процессы, они также будут отображаться; вы можете увидеть это, запустив
sleep 120 &
ps
Чтобы увидеть все процессы, запустите
ps -e
Существует ряд других флагов выбора процесса, подробности см. в man ps
в вашей системе.
Когда вы запускаете script
, он выделяет новый терминал и запускает новую оболочку; поэтому ps
внутри script
работает на другом терминале (, даже если он находится в том же окне терминала в вашей системе или на той же виртуальной консоли ). Вот почему вы не видите script
. Вы можете увидеть, как это происходит, запустив tty
до и после запуска script
:, вы увидите два разных значения.
См. также В чем разница между «терминалом», «оболочкой», «tty» и «консолью»?