我该如何在 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 上启动。我不确定这是否是最简单的方法,但它效果很好。