相关疑难解决方法(0)

如何使任何shell命令的输出无缓冲?

有没有办法在没有输出缓冲的情况下运行shell命令?

例如,hexdump file | ./my_script只会将缓冲块中的hexdump输入传递给my_script,而不是逐行传递.

实际上我想知道如何使任何命令无缓冲的一般解决方案?

stdout buffering

60
推荐指数
4
解决办法
5万
查看次数

为什么在使用grep两次时没有显示输出?

基本上我想知道为什么这不输出任何东西:

tail --follow=name file.txt | grep something | grep something_else 
Run Code Online (Sandbox Code Playgroud)

你可以假设它应该产生输出我已经运行了另一行来确认

cat file.txt | grep something | grep something_else
Run Code Online (Sandbox Code Playgroud)

好像你不能多次输出尾巴的输出!?任何人都知道这笔交易是什么,有没有解决方案?

编辑:要回答到目前为止的问题,该文件肯定有grep应显示的内容.作为证据,如果grep是这样做的:

tail --follow=name file.txt | grep something
Run Code Online (Sandbox Code Playgroud)

输出显示正确,但如果使用它:

tail --follow=name file.txt | grep something | grep something
Run Code Online (Sandbox Code Playgroud)

没有显示输出.

如果有帮助我运行ubuntu 10.04

linux command-line grep file pipe

41
推荐指数
2
解决办法
5万
查看次数

Linux如何确定下一个PID?

Linux如何确定它将用于进程的下一个PID?这个问题的目的是为了更好地理解Linux内核.不要害怕发布内核源代码.如果顺序分配PID,Linux如何填补空白?当它到达终点时会发生什么?

例如,如果我从Apache运行一个PHP脚本,那么<?php print(getmypid());?>在刷新时会打印出相同的PID几分钟.这段时间是apache接收的请求数量的函数.即使只有一个客户端,PID最终也会改变.

当PID改变时,它将是一个接近的数字,但有多近?该数字似乎并不完全是连续的.如果我这样做,ps aux | grep apache我会得到相当多的过程:

在此输入图像描述

Linux如何选择下一个号码?前几个PID仍在运行,以及最近打印的PID.apache如何选择重用这些PID?

linux apache kernel linux-kernel

38
推荐指数
3
解决办法
2万
查看次数

尾巴-f + grep?

Tail有以下选择:

-f      The -f option causes tail to not stop when end of file is reached, but rather to wait for additional data to be appended to the
             input.  The -f option is ignored if the standard input is a pipe, but not if it is a FIFO.
Run Code Online (Sandbox Code Playgroud)

我只想something在尾部输出中进行grep .

tail -f <FILE> | grep <SOMETHING> 
Run Code Online (Sandbox Code Playgroud)

问题是它只运行一次grep并完成.没有其他输出发生.如何让grep正确运行-f

unix linux bash grep tail

13
推荐指数
2
解决办法
4万
查看次数

是否可以组合使用尾部和grep?

我试图在生产日志中尾随用户.

是否可以使用

tail -f grep "username"
Run Code Online (Sandbox Code Playgroud)

linux grep pipeline tail

5
推荐指数
1
解决办法
2万
查看次数

如何为Docker容器着色日志

我有一个容器,该容器在日志中有时会写一个对我来说很重要的关键字,我想在终端中用彩色突出显示该单词,但重要的是仍要实时查看所有内容日志(-跟随)。我刚试过命令

docker logs -f my_app --tail=100 | grep --color -E '^myWord'
Run Code Online (Sandbox Code Playgroud)

但不起作用。

因此,存在一些执行此操作的方法吗?

logging grep docker

5
推荐指数
2
解决办法
3123
查看次数

grep的管道不适用于尾巴?

我试图通过检查日志来调试一个场景,这是我的命令

tail -f eclipse.log | grep 'enimation' | grep  -i 'tap'
Run Code Online (Sandbox Code Playgroud)

基本上我想要的是,在所有的线条中,我在其中打印带有enimation的线条,然后在所有动画中,我想看到带有"tap"的动画.

以下是返回空结果的sammple数据

*******enimation error*********TapExpand
*******enimation error*********TapShrink
Run Code Online (Sandbox Code Playgroud)

这将返回空结果.

如果我运行此命令

 tail -f eclipse.log | grep  -i 'enimation.*tap'
Run Code Online (Sandbox Code Playgroud)

它返回正确的结果.有人可以向我解释一下,上述两个命令之间有什么区别,以及为什么结果会有差异.它们看起来都和我一模一样.

regex linux bash grep

3
推荐指数
1
解决办法
621
查看次数

bash脚本根据stdout消息发出蜂鸣声

从来没有在bash上编码但需要紧急的东西.对不起,如果这不是常态,但我真的想得到一些帮助.

我有一些抛出到stdout的消息,根据消息类型(消息是一个带有"found"字样的字符串)我需要bash脚本发出蜂鸣声.

到目前为止,我已经想出了这个.

  output=$(command 1) # getting stdout stream?
  while [ true ]; do
    if [ "$output" = "found" ]; then # if the stdout has the word "found" 
     echo  $(echo -e '\a') # this makes the beep sound
    fi
  done
Run Code Online (Sandbox Code Playgroud)

我不知道在哪里/如何添加grepawk命令检查具有单词"found"的字符串并且仅返回"found",以便在if条件下它可以检查该单词.

谢谢!

bash stdout beep

2
推荐指数
1
解决办法
5093
查看次数

从shell获得两行

我用

cmd | egrep 'ID|Value'
Run Code Online (Sandbox Code Playgroud)

在我的命令行上输出以下输出:

    ID: 2
Value: 21
    ID: 1
Value: 25
    ID: 1
Value: 22
    ID: 3
Value: 56
    ID: 1
Value: 23
    ID: 2
Value: 50
    ID: 2
Value: 56
    ID: 3
Value: 11
    ID: 3
Value: 26
Run Code Online (Sandbox Code Playgroud)

我想用一个特殊ID过滤它.但是当我使用时:

egrep 'ID: 1|Value'
Run Code Online (Sandbox Code Playgroud)

它将仅使用ID 1显示相同的输出,但显示所有ID的值.

我已经读过关于awk,sed和regex的内容了,但我找不到任何可以帮助我的东西,但我也没那么深入.

有人可以提出一个想法,或者告诉我这是一个错误的方法,我应该采取不同的方式,如何做?

按需输出:

    ID: 1
Value: 25
    ID: 1
Value: 22
    ID: 1
Value: 23
Run Code Online (Sandbox Code Playgroud)

bash awk grep sed

1
推荐指数
3
解决办法
194
查看次数

如何从管道linux命令连续发送输出到文件?

下面的命令每秒生成输出60秒.

sar -n DEV  1 60 | grep lo
Run Code Online (Sandbox Code Playgroud)

如果我将其重定向到文件,则文件sar.log会连续更新,即每秒更新一次

sar -n DEV  1 60 > sar.log &
Run Code Online (Sandbox Code Playgroud)

但是,只要管道然后将其重定向到文件,它就会在文件sar.log完成后填充,即60秒后填充文件.

sar -n DEV 1 60 | grep lo > sar.log &
Run Code Online (Sandbox Code Playgroud)

如何grep和重定向到文件,以便日志文件连续更新,即每秒

我可以使用除grep之外的其他东西,如果它有助于我选择某些内容并每秒重定向到一个文件.

linux bash grep output-buffering

1
推荐指数
1
解决办法
608
查看次数