在 CentOS 6 中使用脚本替换 TTY

在 CentOS 6 中使用脚本替换 TTY

我该如何在 CentOS 6 中用自定义脚本替换 TTY。CentOS 6 使用 upstart 而不是标准 SysV init 脚本,所以我很难弄清楚它是如何工作的。

通常(在 SysV init 脚本中),我会编辑 /etc/inittab 并用我的脚本替换其中一行 mingetty,如下所示:

1:2345:respawn:/root/myscript tty1

但是,对于 Upstart 来说,这个文件没有相关的行,所以我不确定如何实现这一点。

答案1

我已经明白了。

首先,我修改了 /etc/init/start-ttys.conf,使其包含以下脚本部分:

script
    . /etc/sysconfig/init
    for tty in $(echo $ACTIVE_CONSOLES) ; do
          [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue
            if [ "$tty" == "/dev/tty1" ]; then
                    initctl start myjob TTY=$tty
                    continue
            fi
            initctl start tty TTY=$tty
    done
end script

然后我创建了 /etc/init/myjob.conf:

stop on runlevel [012456]

respawn
exec /usr/bin/openvt -c 1 -f -e /root/myscript

这最终会在 tty1 上启动 /root/myscript,而不是在 mingetty 上启动。我不确定这是否是最简单的方法,但它效果很好。

相关内容