- 论坛徽章:
- 0
|
本帖最后由 zhangqingsup 于 2013-12-17 23:39 编辑
有这么个问题,是由另外一个问题派生出来的,
Test case 1:
在文件source.txt中写入如下内容:
192.168.1.21.22
192.168.1.21.22
192.168.1.21.22
192.168.1.21.22
然后使用命令
cat source.txt | awk '{split($1,a,"."); print a[5]}' | xargs -n1 -I {} lsof -i:{}
可以找到输出当前设备上使用22端口的进程。
这说明,当输入是一个静态文件(source.txt)的时候,两个管道符也可以工作正常。
Test case 2:
使用命令:
[root@test]# while :
> do
> echo 192.168.1.22 >> source.txt
> sleep 2
> done
持续在source.txt文件中写入192.168.1.21.22,这个时候使用命令
tail -f source.txt | awk '{split($1,a,"."); print a[5]}' | xargs -n1 -I {} lsof -i:{}
却没有任何输出任何内容。
测试后发现
tail -f source.txt | awk '{split($1,a,"."); print a[5]}' 确实可以不断的在屏幕上打印出所需要22端口,但是却没有办法把打印出来的内容通过管道传递给后面的xargs。
结合两个case,想问下大家有没有好办法解决这个问题。
|
|