Articles of pipe理员

如何确定R中当前工作区中所有对象的大小? (不在WIndows)

在Windows中, 只有一个可以执行memory.size()来获取当前R会话中(对象)所占用的内存总量。 也可以通过print( object.size( thing ), units='auto')来理解单个对象的大小,该print( object.size( thing ), units='auto')表示特定的dataframe/表占用了多less兆字节/千字节。 但如何做相当于print( object.size( —workspace— )) ? 循环for (thing in ls()) print( object.size( thing ), units='auto' )打印错误的输出,比如: 64 bytes 72 bytes 88 bytes 88 bytes 64 bytes 64 bytes 64 bytes 64 bytes 64 bytes 64 bytes 64 bytes 64 bytes 64 bytes 64 bytes 72 […]

在Linux中确定'Free'内存

我想知道是否有一个简单的方法来确定在Linux中“利用”的内存量。 具体而言,由内核和应用程序主动使用的内存,不包括缓冲区和高速caching的内存。 我正在寻找类似于Windows任务pipe理器中find的已用内存的报告(在哪里可以看到使用的内存百分比)。 到目前为止,我能想到的最接近的解决scheme来自这个链接: 在Linux上确定可用内存 在我的Ubuntu 13.0.4上,做一个cat /proc/meminfo ,然后计算100-(((MemFree+Buffers+Cached)/MemTotal)*100) ,它应该给出“使用”内存的百分比。 这是我发现得到一个像在窗口的任务pipe理器中发现的物理内存百分比最接近的方式。 这似乎是一个有效的方法? 如果是这样,是否有更直接的方法?

将printfredirect到pipe道C

上面的代码不会给出任何警告或错误,但父级不会打印使用pipe道传递的string。 任何想法? pid_t pid; int fd[2]; int num_bytes_read; char buffer[80]; pipe (fd); pid=fork(); if (pid == 0) {/*Son*/ fclose(stdout); close(fd[0]); dup(fd[1]); printf ("write in pipe\n"); fflush(stdout); } else { /*Parent*/ close (fd[1]); num_bytes_read = read (fd[0], buffer, sizeof (buffer)); printf ("The received string is: %s\n", buffer); } return (0);

Linux的所有输出到文件

有什么办法告诉Linux系统把所有的输出(stdout,stderr)放到一个文件中? 无需使用redirect,pipe道或修改如何调用脚本。 只要告诉Linux使用一个文件输出。 例如:脚本test1.sh: #!/bin/bash echo "Testing 123 " 如果我运行它像“./test1.sh”(与redirect或pipe道),我想看到一个文件(/ tmp / linux_output)中的“testing123” 问题:在系统中,一个二进制文件调用了一个脚本,这个脚本调用了许多其他的脚本。 这是不可能的,所以如果我可以修改Linux把“输出”到一个文件我可以检查日志。

我怎样才能在Linux中创build一个文件,当我打开它时,它实际上正在运行一个进程

我有一组.sph文件,实际上是audio.wav文件加上一些标题。 我有一个名为sph2pipe的程序,它将这些.sph文件转换为普通的audio.wav文件。 我想为这些.sph文件创build一些符号链接,当我阅读这些链接时,我将实际阅读它们的转换版本。 像这样的东西: ln -s "sph2pipe a.sph |" "a.wav" ln -s "sph2pipe b.sph |" "b.wav" 所以这样,我不必将所有audio文件转换为.wav文件,而只是创build链接到.sph文件,我希望他们能够即时转换。 我希望我自己清楚。 我在想我在找什么是一个命名的pipe道( https://en.wikipedia.org/wiki/Named_pipe ),但是这对我来说是没有用的,因为我需要多次读取.wav文件。 编辑1:我不必使用命名pipe道。 我只是认为这可能是解决scheme。 实际上,就我而言,这些.wav文件需要多次读取。 编辑-2:我想知道Samba(或gvfs-smb)如何工作。 所以这些文件在networking中,但在我的系统中也有一个可用的path,如:/run/user/1000/gvfs/smb-share:server=10.100.98.54,share=db/4a0a010a.sph。 我可以做这样的事吗? (我从一个特定的path和.wav文件读取.sph文件出来:)) 编辑3:我想到目前为止: keep_running.py: #!/usr/bin/python3 import subprocess cmd = 'mkfifo 4a0a010a.wav' subprocess.call(cmd, shell=True) cmd = 'sph2pipe -f wav 4a0a010a.wv1 > 4a0a010a.wav' while True: subprocess.call(cmd, shell=True) 在shell中: ./keep_running.py & play […]

如何获取或捕获由postfix发送的电子邮件正文和标头

我需要在我的Ubuntu服务器上通过postfix发送的邮件正文和头文件。 请你解释一下,如何抓住它? 我知道我可以通过postcat( postcat -vq XXXXXXXXXX )当邮件在邮件队列中,但不幸的是我不知道队列ID( XXXXXXXXXX ),当我find它,邮件已经发送。

使用pipe道input一个awk语句

所以我正在处理一个名为cars的文件,这里是它的内容: toyota corolla 1970 2500 chevy malibu 1999 3000 ford mustang 1965 10000 volvo s80 1998 9850 ford thundbd 2003 10500 chevy malibu 2000 3500 honda civic 1985 450 honda accord 2001 6000 ford taurus 2004 17000 toyota rav4 2002 750 chevy impala 1985 1550 ford explor 2003 9500 我使用grep来过滤包含特定汽车制造商的行,然后将它们传递给我的awk语句,最后将最终结果传递给一个带有三通的新pipe道。 以下是我遇到的代码行: grep "$model" cars | […]

BASH嵌套stream程replace

我想在这样的while循环中使用进程replace的标准输出: #!/bin/bash FILE_1=f1.txt FILE_2=f2.txt while read LINE; do echo "$LINE" done < <(paste <(tail -f "$FILE_1") <(tail -f "$FILE_2")) 当新的数据被添加到文件时,它应该做的就是合并FILE_1和FILE_2的最后一行。 显然,我想做的不仅仅是在while循环中打印行,但是这是一个很好的例子。 不幸的是,当我运行这个脚本时,它只是坐在terminal上,什么都不做。 只运行这一行: paste <(tail -f "$FILE_1") <(tail -f "$FILE_2") 完美的工作,我可以看到terminal上的输出,因为我将数据添加到文件。 是否有一些特殊的语法,我需要使用以将标准输出到另一个进程? 我试过了 paste <(tail -f "$FILE_1") <(tail -f "$FILE_2") | while read LINE; do… 但它仍然只是坐在docker。

如何使回声与bash中的读取兼容?

我试过这个: qs@BF:~$ echo aaa | read c qs@BF:~$ echo $c 它什么都不给,这意味着$ c是一个空的macros。 但为什么下面这个工作: qs@BF:~$ cat trim.hs | read cc qs@BF:~$ echo $cc import qualified Data.Text as T 它正确地给出了trim.hs的第一行 有echopipe道read时有接缝是一个例外。 我对吗? 你能帮我使echo与read兼容吗? 请。

用硬编码的内存地址主机testingC程序

我们将编写C代码的function/unit testing。 这个C程序将作为embedded式软件运行。 但是我们需要在Linux环境下运行testing。 问题是部分被测代码看起来像这样: my_addresses.h: #define MY_BASE_ADDRESS (0x00600000) #define MY_OFFSET_ADDRESS (0x108) my_code.c #include "my_addresses.h" static const My_Type* my_ptr = (My_Type*)(MY_BASE_ADDRESS + MY_OFFSET_ADDRESS); /* my_ptr is dereferenced and used … */ 很显然,在Linux主机环境下这样做不会那么顺利。 有没有办法在testing过程中解决这个问题? 我们可以以某种方式“redirect”程序来使用其他地址,这些地址是在testing过程中分配给内存的有效地址吗? 我们的第一个尝试是在testing期间用另一个头文件replace“my_addresses.h”,其中(extern)声明variables而不是硬定义 – 然后将malloc的内存分配给MY_BASE_ADDRESS等等。问题在于“static const”在c文件中声明。 当然,你不能把一个variables赋给一个静态的consttypes。 我们最好不要修改被testing的代码(尽pipe在最坏的情况下可能会这样)。