如何在启动时登录 tty

如何在启动时登录 tty

我想在 Linux 启动时在特殊 tty(例如 tty2)上执行一些命令,以便每次系统重新启动时,这些命令都会在该 tty 上执行。我使用了链接来执行此操作。

它运行正常,但问题是,在启动时我需要登录所需的 tty,然后执行命令。有没有办法在开始时通过一些命令登录 tty?谢谢

答案1

我认为,运行程序的一个更简单的解决方案是将标志--autologingetty运行所需命令的函数结合起来.bashrc

第一部分:自动登录 getty

您可能知道,TTY 的开头是盖蒂计划/etc/init/作为目录中的启动服务。对于 Ubuntu,默认程序是agetty,它有--autologin标志。因此,我们可以执行以下操作:

在终端运行sudo nano /etc/init/tty1.conf打开 TTY1 的初始化文件(注意,TTY1 只是一个例子,你可以选择任何一个)。将行

exec /sbin/getty -8 38400 tty1

exec /sbin/getty --autologin userName    -8 38400 tty1

替换 userName为您的实际用户名。

第 2 部分:在 shell 登录时运行函数

Linux/Unix 系统有一个很棒的小程序,tty它报告你当前正在使用的终端类型。例如,在 gnome-terminal 中,它会报告类似

$ tty
/dev/pts/27

然而在 TTY1 中它会报告

$ tty
/dev/tty1

$HOME/.bashrc知道我们可以在文件顶部创建一个函数

function testTTY
{
  isTTY=$(tty | awk '{if ($0~/\/dev\/tty.*/) {print "true"}else{print "false"}}')

  if [ $isTTY == "true" ]; then
    printf "You are in virtual console\n"
    printf "current disk usage is"
    df
  fi
}

然后在底部.bashrc调用你的函数,就像这样testTTY。所以,先定义函数,然后再调用它。

附注:

  • 在之间放置自定义命令if [];then ...fi
  • 如果您需要特定的 TTY,请将isTTY代码更改为:isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')

答案2

请按照以下步骤操作。

首先安装 mingetty:$ sudo apt-get install mingetty

5.2)编辑/etc/init/tty1.conf

/* 将 Root 设为默认登录名 */

更改:exec /sbin/getty -8 38400 tty1

至:exec /sbin/mingetty --autologin root --noclear tty1

/* 将普通用户作为默认登录名 */

exec /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1

相关内容