stdbuf 或 nohup 的实际用途是什么?

stdbuf 或 nohup 的实际用途是什么?

我现在必须完成课程的一些 coreutils 命令的编写,并且我无法想到一个小的实用代码示例来演示stdbuf.有人用它来修复几个特定的​​ UNIX 命令的交互吗?我知道它的作用。只是想到的第一个命令有自己的缓冲控件,并且正常的终端输出无论如何都是行缓冲的。它对于附加到日志一定很流行,但我找不到一个好的命令来演示。

在 的情况下nohup,是否有任何通常与其一起运行的命令来防止中断?

正如我所提到的,我目前正在为一项课程作业做这件事。然而,这并不违反其任何规则。我只是想为这些例子找到一个好的起点。我没有一个stdbuf,而且我不喜欢我正在使用的那个基本的nohup

答案1

stdbuf 示例位于http://www.pixelbeat.org/programming/stdio_buffering/

nohup 用于您希望跨登录运行的任何长时间运行的命令。您还可以使用 screen(1) 或追溯使用 screen + 来执行此操作https://github.com/nelhage/reptyr

答案2

让我们从一个没有stdbuf.你需要 2 个终端,因为tail -f会阻塞。

1号航站楼

touch log_file1
tail -f log_file1 | cut -d " " -f 1 | uniq

第2航站楼

echo "A 1" >> log_file1

您在终端 1 中看不到任何输出。

我们再试一次并添加stdbuf到 Terminal 1。

touch log_file2
tail -f log_file2 | stdbuf -oL cut -d " " -f 1 | uniq

第2航站楼

echo "A 1" >> log_file2

这次您应该会A在 1 号航站楼看到。

答案3

这是一个具体的例子

stdbuf -oL ./a.out > log.txt   

只有stdbuf使用时,打印输出才能通过管道传输到文件中。

相关内容