为了学习,我想从命令提示符启动一个新的终端(比如tty10)。我知道我可以只运行sudo systemctl start getty@tty10.service
,但我现在想手动运行它。我检查了systemd service getty@,它使用以下命令行:
/sbin/agetty -o '-p -- \\u' --noclear %I $TERM
因此,我试图从终端(tty1)复制这一点,我运行了以下命令:
sudo /sbin/agetty -o '-p -- <username>' --noclear tty10 linux
它确实在第10终端启动了一个新的登录提示,我输入了用户名,但它从不提示输入密码。另外,当我回到1号航站楼时,我看到它被注销了。我做错了什么?
发布于 2021-05-10 16:35:27
不幸的是,agetty
应该在inittab
中或者作为systemd
单元持久化。
至于shell中的agetty
,它实际上不是为了在前台运行和控制其他终端而设计的,就像在另一个post 这里中提到的那样。
将其作为一个systemd
单元来执行,将允许它保持稳定,而不会关闭用于执行agetty
的连接或父shell。
如果只想检查是否能够在服务器和客户端之间建立连接,则可以执行以下操作:
# /sbin/agetty -L 115200 ttyS0 vt102
# screen /dev/ttyS0 115200
/dev/ttyS0
是您的串行连接所在的位置。如果您得到一个登录提示,连接是好的。要想持久化,必须是一个systemd
单元。欲了解更多信息:
https://unix.stackexchange.com/questions/544829
复制相似问题