【发布时间】:2016-01-30 18:22:39
【问题描述】:
假设我有一个 C++ 程序一直像这样产生输出
#include <iostream>
using namespace std;
void main()
{
int i=0;
while(1)
{
cout << (i++)%10 << endl;
}
}
我现在想在远程 linux 服务器的后台运行这个程序。如果我这样做
nohup ./program &>/dev/null &
然后我根本没有得到任何输出。如果我这样做了
nohup ./program &
所有输出都被写入 nohup.out,淹没我的硬盘。
如何在后台关闭输出并在程序在前台时打开输出到控制台?
【问题讨论】:
-
似乎您要求在登录到远程服务器时在终端上打印进程,并且在您注销时不要在任何地方打印。你能在你的具体情况下澄清“背景”和“前景”之间的区别吗?
-
在我登录到远程服务器时,进程不应该一直打印到终端,不。在我告诉他“告诉我发生了什么事”之前,它不应该在任何地方打印。然而,计算必须一直进行..
-
好的。你想如何告诉程序“告诉我发生了什么”?在我看来,您应该将其放入程序中。或者在包装外壳脚本中。
-
是的,这正是我要问的问题:) 无法更改程序本身。
-
如果是这种情况,我只能考虑使用类似
logrotate的方法,当您想查看发生了什么时,您会在日志文件上使用tail。这就是我能提供多少帮助。希望澄清将帮助其他人为您提供更有用的帮助。
标签: linux terminal background-process nohup