Bash管道执行

netcat联机帮助页指示,如果没有-c和-e选项,可以使用以下命令通过nc为 shell提供服务.
$rm -f /tmp/f; mkfifo /tmp/f
$cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

现在,根据我的理解,来自fifos的读取和写入都是阻塞操作.例如,如果我跑

$mkfifo foo
$cat foo

bash会阻塞,因为没有写入foo.来自nc联机帮助页的示例中的管道如何不阻塞?我假设我误解了管道的执行方式.

管道中的所有命令同时运行,而不是顺序运行.所以cat / tmp / f确实会阻塞,但是/ bin / sh和nc仍会在发生时启动.当客户端连接到端口并发送命令时,nc将写入FIFO,这将允许cat解除阻塞.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...