Articles of pipe理员

C Minishell添加pipe道

所以我正在制作一个UNIX minishell,并试图添加pipe道,所以我可以做这样的事情: ps aux | grep dh | grep -v grep | cut -c1-5 不过,我在缠绕pipe道部分时遇到了麻烦。 我把所有的“|” 字符为0,然后将每行作为普通线路运行。 但是,我试图转移输出和input。 一个命令的input需要是前一个命令的输出,一个命令的输出需要是下一个命令的input。 我正在做这个使用pipe道,但是我不知道在哪里调用pipe()以及在哪里closures它们。 从主处理函数processline()中,我有这样的代码: if((pix = findUnquotChar(line_itr, '|'))) { line_itr[pix++] = 0; if(pipe (fd) < 0) perror("pipe"); processline(line_itr, inFD, fd[1], pl_flags); line_itr = &(line_itr[pix]); while((pix = findUnquotChar(line_itr, '|')) && pix < line_len) { line_itr[pix++] = 0; //? if(pipe […]

在部署Capistrano之后Rails资产缺失

我正在构build一个VPS,并通过Capistrano,数据库连接等部署,但没有可用的资源页面 – 这是基本的HTML只。 资产似乎被编译,并存在于共享目录中。 从页面html: <link href="/assets/application-a1b5d69aeaff709fd3dce163c559b38b.css" media="all" rel="stylesheet" type="text/css" /> <script src="/assets/application-0ebd07089629f8c6880dddfb688d525d.js" type="text/javascript"></script> 资产文件似乎存在于共享目录中: assay@assaypipeline:~/apps/assay/shared/assets$ ls application- a1b5d69aeaff709fd3dce163c559b38b.css application-a1b5d69aeaff709fd3dce163c559b38b.css 当我查看,源 ,然后单击资产path的超链接,我得到一个404 Nginx找不到。 解 感谢Martin M(接受答案)的帮助。 我从服务器上的〜/ apps /(应用程序名称)/当前目录中执行的步骤。 $ bundle install $ RAILS_ENV=production bundle exec rake assets:precompile $ sudo service nginx restart 显然,将这​​个包含在Capistrano食谱中会更好。 * 编辑 – Capfile * load 'deploy' load 'deploy/assets' load 'config/deploy'

如何通过SFTP将远程服务器上的LS的输出传输到本地文件系统?

我通过命令行通过SFTPlogin到远程服务器。 我所在的文件夹包含数十万个文件。 我需要在文本文件中获取这些文件的列表,以便我可以通过编程访问它们,因为没有一个PHP SFTP客户端能够返回如此庞大的文件列表。 当我在目录上运行ls (在SFTP会话中)时,文件列表最后显示大约需要20分钟。 我没有这个服务器上的写访问权限,所以我不能将输出传送到远程服务器上的一个文件。 我怎样才能输出到我的本地机器上的文本文件…或获取文件列表到我的本地机器一些其他方式?

shell如何处理无限循环

无论何时我需要限制shell命令输出,我使用较less的分页结果: cat file_with_long_content | less 这工作得很好,但是我很好奇,即使输出永远不会结束,仍然可以工作,请考虑在inf.sh文件中使用以下脚本: while true; do date; done 然后我跑 sh inf.sh | less 而且它仍然可以对结果进行重新分页,所以说pipe道输出结果而不是等待命令完成才能输出结果是正确的吗?

在不同的执行过程中保持FIFO可读

我从来没有使用过一个命名pipe道,最近才意识到这正是我所需要的。 我正在运行一个使用gnu parallel的程序,这个程序可能会产生为mySQL上的一个数据库格式化的输出(GB到1TB,现在很难知道)。 我发现我可以打开两个terminal:terminal1得到如下的东西: find . -type f -name "*.h" | parallel –jobs 12 'cprogram {}' > /home/pipe 在哪里pipe道是由mkfifo制成的fifo。 在第二个terminal上,我运行一个类似这样的命令: mysql DataBaseName -e "LOAD DATA LOCAL INFILE '/home/pipe' INTO TABLE tableName"; 有用… 但是,这很笨拙…如果我理解正确,第一个过程结束时会产生一个EOF,导致pipe道closures。 理想情况下,我想在不同参数的循环中运行第一个进程。 每次迭代可能需要很长时间,我需要进行合理性检查,所以我不会松懈一周,以查明是否有错误或逻辑错误。 我想知道如何以标准的方式使用FIFO这种程序。

POSIX:FreeBSD vs Linux中的pipe道系统调用

在Linux(2.6.35-22-generic)中, man pipe指出 pipe()创build一个pipe道,一个可用于进程间通信的单向数据通道。“ 在FreeBSD(6.3-RELEASE-p5)中, man pipe指出 pipe()系统调用创build一个pipe道,这是一个允许双向数据stream的对象,并分配一对文件描述符。 一个是单向的,另一个是双向的。 我希望这不是一个愚蠢的问题,但哪种方法是这样做的标准方式? 他们都符合POSIX? 为了使我的意图清楚,我相信pipe()是一种方法,并且正在寻找一些弹药以获得任何点数,因此在考试中丢失了一些分数; p

在添加新的veth界面时运行脚本

Docker为每个创build的容器创build一个连接到桥( docker0 )的veth接口。 http://docs.docker.io/use/networking/ 我想限制这些新的veth接口的带宽。 我find了一个与奇迹般的做法。 不过,我想自动化这一点。 有没有办法让钩子在每次连接一个新的veth接口时运行一个脚本? 我已经研究过在/etc/network/if-up.d/添加脚本,但是只有在启动时veth添加veth 。 以下是我想要通知的一些系统日志。 我知道我可以尾巴这些日志,但是这种方法似乎有点哈克,必须有一种方式通过操作系统得到这个事件的通知。 May 2 23:28:41 ip-10-171-7-2 kernel: [22170163.565812] netlink: 1 bytes leftover after parsing attributes. May 2 23:28:42 ip-10-171-7-2 kernel: [22170163.720571] IPv6: ADDRCONF(NETDEV_UP): veth5964: link is not ready May 2 23:28:42 ip-10-171-7-2 kernel: [22170163.720587] device veth5964 entered promiscuous mode May 2 23:28:42 ip-10-171-7-2 avahi-daemon[1006]: Withdrawing […]

Linux如何计算MemFree

我想了解我的embedded式Linux内存使用情况。 通过使用top工具和进程文件/ proc / meminfo,我可以看到进程正在使用多less虚拟内存,以及系统有多less物理内存可用。 但是对于任何给定的进程看来,虚拟内存可以比使用的物理内存高得多。 由于这是embedded式系统内存交换禁用(SwapTotal = 0) linux如何计算自由物理内存? 因为它似乎没有考虑在虚拟内存空间中分配的所有内容。

使用pipe道编写gzipped输出文件,无需额外的磁盘空间

我有以下实现的function,用于读取没有磁盘使用gzipped文件。 #include <fstream> #include <stdlib.h> // for mkstemp() and std::system() #include <memory> #include <errno.h> #include <cassert> #include <unistd.h> // for ::close() and unlink() void foo (std::ifstream& in, std::string& fileName) { char tmpName[] = "/tmp/tmp.XXXXXX"; const int fileDescriptor = mkstemp(tmpName); if (fileDescriptor >= 0) { std::string tmpFileName (tmpName); ::close(fileDescriptor); unlink(tmpFileName.c_str()); std::string cmd= "mkfifo " + tmpFileName; […]

如何检测内存不足段错误?

如何检测segfault是否由内存不足造成的? 我有一个段错误,valgrind和duma / efence,因为它似乎崩溃这些工具(Valgrind“不可能发生的事情”,杜马:“mprotect()失败:无法分配内存”诊断) 应用程序(Gazebo)只是崩溃了一个段错误,堆栈跟踪似乎没有提供许多提示,为什么。 TLDR: 是否有简单的工具或方法来确认或排除内存不足的情况是导致段错误的原因? (顶部在崩溃前不显示过多的内存使用量)