小编ari*_*lCo的帖子

Bash:无法跳出管道“while read”循环;流程替代工程

我打算将程序的输出通过管道传输到while read VAR循环中,并break在找到模式时,但事实并非如此。

概念证明:

inotifywait -qm -e create . | while read line; do echo $line; break; done
./ CREATE newfile
Run Code Online (Sandbox Code Playgroud)

..

tail -f /var/log/syslog | while read line; do echo $line; break; done
Nov 6 22:44:05 section9 ntpdate[2381]: adjust time server 91.189.89.199 offset 0.272779 sec
Run Code Online (Sandbox Code Playgroud)

无论源程序输出什么,这些都永远不会退出。set -x预先设置表明循环永远不会迭代到第二个read$BASH_SUBSHELL在这些示例中为 1。

tailinotifywait、 等不应该接收 SIGPIPE 并退出吗?

请注意,进程替换 ( while read ... break; done < <(tail -f ...)) 工作正常。$BASH_SUBSHELL …

bash pipe

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

为什么没有设置 setuid 位来安装“nethogs”?

我已经使用nethogs了一段时间了,sudo每次都必须使用,同时ping设置了 setuid 位。今天我为 nethogs 设置了它并且它有效:

$ ls -l $(which nethogs) $(which ping)
-rwxr-xr-x 1 root root  64496 Nov  2  2011 /usr/sbin/nethogs
-rwsr-xr-x 1 root root 44168 May  7 17:21 /bin/ping

$ sudo chmod u+s  $(which nethogs)

$ ls -l $(which nethogs)
-rwsr-xr-x 1 root root 64496 Nov  2  2011 /usr/sbin/nethogs

$ nethogs
Run Code Online (Sandbox Code Playgroud)

你能想到什么理由不这样默认安装吗?

security setuid

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

标签 统计

bash ×1

pipe ×1

security ×1

setuid ×1