我想在 Linux 启动时在特殊 tty(例如 tty2)上执行一些命令,以便每次系统重新启动时,这些命令都会在该 tty 上执行。我使用了这链接来执行此操作。
它运行正常,但问题是,在启动时我需要登录所需的 tty,然后执行命令。有没有办法在开始时通过一些命令登录 tty?谢谢
答案1
我认为,运行程序的一个更简单的解决方案是将标志--autologin
和getty
运行所需命令的函数结合起来.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