如何在登录前删除清除屏幕

在ubuntu服务器上,如何在登录屏幕弹出之前避免清除屏幕?

我正在尝试在其中一个服务上读取错误消息,我得到了这个令人讨厌的清晰屏幕,我无法使用shift-pageUp向上滚动。

对于systemd,将TTYVTDisallocate设置为no。

要实现这一点,请运行systemctl edit getty@tty1并输入以下代码

 [Service] TTYVTDisallocate=no 

查看引导期间出现的消息的最后一个屏幕

当Ubuntu Server引导时,您看到的消息通常会写入tty7(第七个虚拟控制台)。 启动完成后,您将切换到tty1,系统会提示您登录。 因此,实际上没有清除引导消息; 您只需切换到与包含它们的控制台不同的控制台。

要再次查看它们,可以按Alt + F7切换到tty7。 您可以使用Alt + F1切换回tty1(使用Alt + F2切换回秒,依此类推)。 这不适用(也不应该 )适用于大多数Ubuntu Server系统,但是当GUI运行时,必须使用Ctrl + Alt + F1切换到tty1(和Ctrl + Alt + F2替换tty2,依此类推)。

在用户注销后防止屏幕被清除,因此会话中的文本在后续会话中可见

在您的主目录中有一个名为.bash_logout的文件,其中包含以下内容:

 if [ "$SHLVL" = 1 ]; then [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q fi 

这就是导致在注销时清除屏幕的原因。 要阻止这种情况发生,请注释掉所有这些行,所以它看起来像:

 #if [ "$SHLVL" = 1 ]; then # [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q #fi 

经过数小时的谷歌搜索,我在这个post和这个问题中找到了解决方案。

首先,将console=tty1添加到您的GRUB_CMDLINE_LINUX (我还建议添加noplymouth以抑制plymouth及其无用的闪屏)。

 #> sudo vi /etc/default/grub GRUB_CMDLINE_LINUX="console=tty1 noplymouth" 

这会强制将内核日志打印在tty1而不是tty7并在登录提示之前避免使用tty开关。

然后进入/etc/init并编辑tty1.conftty2.conftty3.conftty4.conftty5.conftty6.confconsole.conf一个或多个。 我编辑了所有添加--noclear选项到getty命令。 例如,编辑tty1.conf

 #> sudo vi /etc/init/tty1.conf 

你必须更换:

 respawn exec /sbin/getty -8 38400 tty1 

有:

 respawn exec /sbin/getty -8 38400 --noclear tty1 

这就是全部,运行sudo update-grub ,现在你的系统应该在一个tty启动而不清除它。