Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从bash翻转标准输出?_Bash_Shell_Logging_File Io_Scripting - Fatal编程技术网

如何从bash翻转标准输出?

如何从bash翻转标准输出?,bash,shell,logging,file-io,scripting,Bash,Shell,Logging,File Io,Scripting,我有一个在后台运行的脚本,可以打印一些输出。出于日志目的,我将标准输出重定向到一个文件。但是,我不希望这个文件永远增长,如果不自己编写逻辑代码,什么是实现滚动的好方法?(根据日期或文件大小进行滚动)。通过管道将输出转换为类似的内容,它将为您处理所有这些内容 例如: script_that_produces_output.sh |multilog s2000 ./logdir 将运行脚本,将stdout捕获到一个名为/logdir/current的文件中。当stdout大于2000字节时,将其旋

我有一个在后台运行的脚本,可以打印一些输出。出于日志目的,我将标准输出重定向到一个文件。但是,我不希望这个文件永远增长,如果不自己编写逻辑代码,什么是实现滚动的好方法?(根据日期或文件大小进行滚动)。

通过管道将输出转换为类似的内容,它将为您处理所有这些内容

例如:

script_that_produces_output.sh |multilog s2000 ./logdir

将运行脚本,将stdout捕获到一个名为
/logdir/current
的文件中。当stdout大于2000字节时,将其旋转。

除了multilog之外,套件中还有一个类似的工具,名为svlogd。由于daemontools(multilog)最近才成为公共领域,您可能会发现它已经打包在您的发行版中。

您可以利用
rotatelogs
():您所需要做的只是通过管道将输出传递给它,提供很少的选项,其余的就由它来处理了。例如:

your_script.sh | rotatelogs /var/log/your.log 100M

将在输出文件达到100M时自动旋转输出文件(可配置为基于时间间隔旋转)。

这取决于日志记录程序在日志旋转后关闭并重新打开日志。
logrotate
可向可捕获和处理日志的程序发送信号。很简单。你能举一个关于如何使用multilog的简单例子吗?