Articles of pipe理员

限制linux下R的内存使用

我们在Linux集群环境中运行R. 头节点有一些挂起时,用户无意中采取了所有的内存使用R进程。 有没有办法限制Linux下的内存使用情况? 我不想提出全球性的限制,但这可能是唯一的出路。

一些分配器是懒惰的吗?

我在Linux下编写了一个C程序mallocs内存,循环运行它,TOP没有显示任何内存消耗。 那么我已经做了一些内存,TOP显示内存消耗。 当我malloc,我真的“获得记忆”,还是有一个“懒惰”的内存pipe理,只有当我使用它时,给我的内存? (也有一个选项,TOP只知道内存消耗,当我使用它,所以我不知道这个..) 谢谢

带有/ dev / zero的mmap

假设我使用/ dev / zero使用mmap分配一个大内存(40MB),如下所示。 fd = open("/dev/zero", O_RDWR); a = mmap (0, 4096e4, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, fd, 0); 我所理解的是,内核将把内存初始化为零,因为页面被带入物理内存(我认为现代Linux内核使用按需分页 )。 例如,当第一页被触摸并因此被带入物理内存时,内核将其全部4096个字节初始化为零,然后当第二页被触摸时,它将执行相同的操作,等等。 我的理解是正确的吗?

在纯bash中传递一个密码给ssh

我想通过一个bash脚本传递一个密码给ssh (是的,我知道有ssh密钥,我可以使用,但这不是我想要的)。 我发现一些使用expect解决scheme,但由于它不是一个标准的bash工具,我想知道如果我可以使用pipe道来做到这一点。 有人可以向我解释为什么像这样: echo "password\n" | ssh somehost.com 要么 ssh somehost.com <(echo "password\n") 不起作用? 有没有可能使其工作? 也许执行ssh作为一个不同的进程,获得其PID,然后直接发送一个string呢?

从内核分配用户空间内存

我正在打电话 sys_readlink(const char __user *path, char __user *buf, int bufsiz) 直接,但得到EFAULT错误代码。 出现此错误是因为buf指向内核空间的内存。 那么,有没有可能从内核分配用户空间内存? kmalloc(size, GFP_USER)与kmalloc(size, GFP_KERNEL)类似kmalloc(size, GFP_KERNEL)并返回指向内核内存的指针。

pipe道实施

我想实现一个支持pipe道的linux shell。 我已经完成了简单的命令,在后台运行的命令,redirect,但pipe道仍然丢失。 我已经阅读了一些代码片段,但仍然无法理清工作的解决scheme。 我到目前为止: int fd[2]; pipe(fd); pid_t pid = fork(); if (pid == -1) return -1; if (pid == 0) { close(fd[1]); //close write to pipe, in child execlp("cat", "cat", "names.txt", NULL); } else { close(fd[0]); //close read from pipe, in parent execlp("sort", "sort", NULL); } 我是一个新手程序员,正如你可能知道的那样,当我正在编写一些我不太了解的东西时,显然是这样,我喜欢从一些非常简单和具体的东西开始,然后从那里开始构build。 因此,在能够在pipe道中实现三个或更多不同的命令之前,我希望能够计算“ls names.txt | sort”或类似的东西,其中names.txt是一个名称文件无序的文件。 更新的代码,但仍然不起作用。 谢谢。

为什么ps o / p列出pipe道后的grep进程?

当我做 $ ps -ef | grep cron 我明白了 root 1036 1 0 Jul28 ? 00:00:00 cron abc 21025 14334 0 19:15 pts/2 00:00:00 grep –color=auto cron 我的问题是为什么我看到第二行。 从我的理解, ps列出的进程和pipe道列表grep 。 grep甚至没有开始运行,而ps正在列出进程,那么如何将grep进程列在o / p? 相关第二个问题: 当我做 $ ps -ef | grep [c]ron 我只得到 root 1036 1 0 Jul28 ? 00:00:00 cron 第一次和第二次grep执行有什么区别?

是SIGSEGV交付给每个线程?

我有一个multithreading的Linux程序。 在某些记忆区域,我有兴趣看看它们是否在特定的时间段内被写入。 为此,我只给这些内存页面的读访问权限,并为SIGSEGV安装一个信号处理程序。 现在我的问题是,每个线程会自己调用信号处理程序。 说线程1写入一些禁止的内存区域,它将是一个执行信号处理程序?

内核页面是否被换出?

关于Linux内核,“内核”页面是否被换出? 此外,用户空间页面是否曾经驻留在ZONE_NORMAL?

在Linux中根据模式重命名大量文件

我试图用mv命令做三件事,但不知道这是可能的吗? 可能需要一个脚本。 不知道该怎么写。 所有文件都在同一个文件夹中。 1)以v9.zip结尾的文件应该是.zip(v9被删除) 2)包含_的文件应该是 – 3)小写字母旁边的大写字母(或大写字母旁边的小写字母)的文件之间应该有一个空格。 所以MoveOverNow将被移动到现在和ruNaway将结束[az] [az]或[az] [AZ]成为[AZ] [az]和[az] [AZ]