Как запустить оболочку Linux из / etc / inittab - PullRequest
4 голосов
/ 30 июня 2010

Раньше в нашем / etc / inittab было две записи:

::sysinit:/etc/init.d/rcS
ttyS0::respawn:-/bin/sh

rcS - это сценарий оболочки, который обычно запускает наше приложение, но в особом случае мы вызывали «return» для его завершения, которыйочевидно, позволяет / bin / sh взять tty, когда мы получили приглашение оболочки, где мы могли бы выполнить какое-то обслуживание.

Теперь inittab выглядит так:

::once:/etc/init.d/rcS

Теперь мы запускаемshell, выполнив "/ bin / bash -i" в скрипте rcS, так как мы не хотим всегда запускать вторую оболочку (из-за ограничений памяти), которая обычно никогда не используется.

Но созданный bashне поддерживает управление заданиями, что очень ограничивает.

Поэтому мой вопрос заключается в том, могу ли я создать оболочку (и, возможно, прекратить выполнение сценария rcS) так же, как обработанный процесс инициализации в нашем предыдущем решении, так что яполучить снова оболочку с контролем работы?

1 Ответ

4 голосов
/ 20 мая 2011

Это зависит от того, какую именно ОС вы используете. Вот пример, который работает на RHEL / CentOS.

6:2345:respawn:/sbin/mingetty --autologin root tty6

Вот то, что кто-то другой сделал для подобного трюка.

openvt -f -c 12 -w -- sh -c "unicode_start; echo -e '$NORPT'; exec $LOGINSH" >/dev/tty1
...