Dal*_*lko 6 grep tail gnu-screen tee
这是 Ubuntu (3.13.0-29-generic #53),尝试做一个简单的 bash 脚本来监控匹配行的日志文件。
如果我执行以下操作,则 bash shell 中除了匹配项之外没有任何输出,这是预期的:
tail -F server.log | grep --line-buffered "word" | tee -a wordwatch.log
但是如果我尝试在屏幕上做同样的事情,会话就会收到来自监视日志文件的不匹配数据的垃圾邮件。显然,它显示了监视日志文件中的所有内容。此垃圾邮件不会出现在输出日志文件中。
screen -S "wordwatch" tail -F server.log | grep --line-buffered "word" | tee -a wordwatch.log
我做错了什么,如何阻止监视的日志向屏幕会话发送垃圾邮件?
Kon*_*bas 10
当您以这种方式启动管道时:
screen -S "wordwatch" tail -F server.log | grep --line-buffered "word" | tee -a wordwatch.log
Run Code Online (Sandbox Code Playgroud)
然后仅tail -F server.log
在内部启动screen
,其余所有连接到screen
,而不是tail
.
因此,您应该调用已经可以运行的 bash 脚本:
screen -S "wordwatch" myworkingscript.sh
Run Code Online (Sandbox Code Playgroud)
另一种方法是显式启动 shell 并将所有行传递给它:
screen -S "wordwatch" bash -c 'tail -F server.log | grep --line-buffered "word" | tee -a wordwatch.log'
Run Code Online (Sandbox Code Playgroud)
使用屏幕查看日志的另一种好方法是特殊配置:
#### logger.screenrc
sessionname logger
hardstatus alwaysignore
split
split
screen -t "Log One" 1 sh -c 'tail -F /a/b/c | egrep "xxxx" | tee -a '
focus
screen -t "Log Two" 2 /home/somescript.sh
focus
screen -t "Messages" 3 /home/otherscript.sh
focus
####
Run Code Online (Sandbox Code Playgroud)
screen
应该这样调用:
# screen -c /home/logger.screenrc
Run Code Online (Sandbox Code Playgroud)
要退出只需按下<CTRL-A><CTRL-\>
并确认。
归档时间: |
|
查看次数: |
751 次 |
最近记录: |