环境

环境

环境

Linux version 2.6
Screen version 4.03.01

我在屏幕会话中运行一个应用程序。该程序打印到 STDOUT 并从 STDIN 读取。

我想要做的事情:

首先,将 'd 的 STDOUTscreen tee写入文件。出于某种原因,管道到 tee 只写入前几行,然后停止。这可能是因为我正在执行的 shell 脚本运行了其他应用程序/shell 脚本... 有没有办法连接到屏幕会话的 STDOUT?

其次,我想创建一个文件,比如 fifo?我可以在其中写入数据,并让其将数据发送到屏幕会话的 STDIN。

我愿意接受其他建议,比如screen根本不使用,做nohup一些事情,fifo一些

基本上,我想让一个应用程序处于后台,并有一个文件用于输出,另一个文件用于将输入重定向到。

答案1

基本上,我想让一个应用程序处于后台,并有一个文件用于输出,另一个文件用于将输入重定向到。

如果是这种情况,那么(1)我们需要后台运行application并将其输出发送到文件file

application >file &

并且,(2)我们需要将应用程序的输出添加到命令中another

tail -f | another

例子

让我们创建一个示例applicationanother

$ application() { while sleep 1; do date; done; }
$ another() { grep 2017; }

现在,让我们application从背景开始:

$ application >file &
[1] 5989

然后,让我们another在前台运行:

$ tail -f file | another
Sat May 20 18:32:05 PDT 2017
Sat May 20 18:32:06 PDT 2017
Sat May 20 18:32:07 PDT 2017
Sat May 20 18:32:08 PDT 2017
Sat May 20 18:32:09 PDT 2017
Sat May 20 18:32:10 PDT 2017
[...clip...]

在 Screen 会话中使用 FIFO

首先,启动 screen 会话。然后运行:

$ mkfifo fifo
$ application >fifo &
[1] 8129
$ cat fifo | another
Sat May 20 18:50:39 PDT 2017
Sat May 20 18:50:40 PDT 2017
Sat May 20 18:50:41 PDT 2017
Sat May 20 18:50:42 PDT 2017
Sat May 20 18:50:43 PDT 2017
Sat May 20 18:50:44 PDT 2017
Sat May 20 18:50:45 PDT 2017
Sat May 20 18:50:46 PDT 2017
[...snip...]

(我使用cat fifo | another它来与第一个tail -f版本并行。 cat在这里是不必要的。我们可以使用another <fifo。)

相关内容