Linux 终端,我的程序仅在滚动打印输出后恢复

Linux 终端,我的程序仅在滚动打印输出后恢复

我使用的是 Ubuntu 12.04,Unity。我在终端中运行一个程序。它应该运行大约 10 个小时。但是几个小时后我回来时它就停止了。CPU 使用率显示该程序未运行。然后我通过滚动终端窗口检查打印输出。在我将滚动条移到顶部(不知何故窗口是空的,此时看不到打印输出)并按下回车键后,我的程序突然恢复了。那么,我该如何设置参数以使我的程序不会停止?

向后滚动设置为 1024 行(我的程序的打印输出远多于此)。

答案1

向其发送 SIGCONT 或 SIGALRM 以确保程序在后台运行。我认为内核正在暂停该进程。

$ killall -s SIGCONT PROG_NAME

或者

$ kill -SIGCONT PROG_PID

另请检查您的电源选项并确保系统未处于睡眠状态。

PS:您可以将其作为进程生成,$./PROG &以确保它不是终端问题,或者将输出通过管道传输到文件以使缓冲区正常运行$./PROG > output.txt

答案2

根据您的描述,我认为可能出于某种原因只需要输入。

我最近也有过类似的经历,一个脚本停滞了:原来,那个调用的脚本正在执行一个动量命令并等待确认是否应删除不属于当前用户的文件,但我看不到该消息,因为不幸的是该脚本的程序员决定重定向标准输出标准错误

因此您的问题可能与此类似。

  1. 您可以尝试将“是”的答案传送到您的程序中:yes | yourprog

  2. 您可以尝试重定向标准输入yourprog </dev/null

相关内容