我正在写一个应该在linux主终端TTY1上运行的程序,作为一个"更具交互性"的程序。替换普利茅斯。
一切正常。一两个小时后,显示冻结,直到任何按键被按下,让我们假设我运行一个bash循环显示时间,它在一段时间后消失,只在超时发生时显示最后一次迭代。
我的服务:
[Unit]
Description=Script starter
After=getty.target
Conflicts=getty@tty1.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/screen.sh
StandardInput=tty-force
[Install]
WantedBy=multi-user.target
和脚本:
#!/bin/bash
while true
do
sleep 1
clear
date
done
同样的问题是当我运行我在c/ncurses
中编写的程序时根据你目前的信息,很难说为什么会出现冻结。也许你换了tty,一两个小时后内存就不够用了。也许你的硬件有缺陷(显卡、cpu、ram)。也许,也许…
试着把你的sdtout写在一个文件中,然后带尾读。
#!/bin/bash
clear
while true
do
sleep 1
date >> logFile
done
在另一个控制台试试这个:和
tail -f --retry logfile
-f
代表follow
--retry
如果文件不可用,它将重试读取它。
我看了一整天,是什么原因导致控制台屏幕死机显示定时器,我找到了原因。
内核参数consoleblank,我将其设置为0并重新安装grub,之后其工作
Idk,它在正常pc上的行为如何,我使用vsphere提供的虚拟控制台
so yest consoleblank=0 + grub install