相关疑难解决方法(0)

管道如何在Bash中工作的简单解释是什么?

我经常在Bash中使用管道,例如:

dmesg | less
Run Code Online (Sandbox Code Playgroud)

虽然我知道这是什么输出,它需要dmesg并让我滚动它less,我不明白|它在做什么.它恰恰相反>吗?

  • 对于什么有简单或隐喻的解释|?
  • 在一条线路中使用多个管道时会发生什么?
  • 管道的行为在Bash脚本中出现的位置是否一致?

bash pipe

59
推荐指数
7
解决办法
5万
查看次数

管道缓冲区大小是4k还是64k?

我在多个地方读到管道的默认缓冲区大小是4kB(例如,这里),我ulimit -a倾向于确认该语句:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15923
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8 // 8 * 512B = 4kB
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, …
Run Code Online (Sandbox Code Playgroud)

c linux size buffer pipe

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

shell如何执行管道命令?

我想了解shell如何执行管道命令?例如猫| 更多.我知道执行正常的命令shell会执行fork,执行它然后子返回.但shell如何在内部处理管道命令的执行?

unix shell

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

linux内核将数据写入管道的位置

假设以下简单代码:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

main()
{
    int fd[2];                
    pipe(fd);
 // ...               
    write(fd, buf, VERY_BIG_NUMBER);
 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题:

  1. 有人可以解释写入数据的位置吗?
  2. 它是写入用户空间或内核空间中的某个缓冲区吗?
  3. 可以写入管道的最大长度是多少?
  4. 由于管道写入是阻塞操作,因此效率内核不会做任何事情并等待读者将数据直接传递给它吗?

linux pipe

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

什么是| (竖线字符)在shell(bash)命令中执行?

我必须运行此命令来安装NPM。它有什么作用?什么是| 在最后?

curl https://raw.githubusercontent.com/creationix/nvm/v0.23.2/install.sh | bash
Run Code Online (Sandbox Code Playgroud)

另外,我是否在Bash中运行类似UNIX的命令?为什么这样做?Bash是终端的UNIX命令兼容接口吗?

bash

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

标签 统计

pipe ×3

bash ×2

linux ×2

buffer ×1

c ×1

shell ×1

size ×1

unix ×1