Articles of pipe理员

如何以编程方式切换到compiz中的特定窗口?

有没有一个命令来告诉compiz,我们想把前面的焦点放在一个特定的窗口? 我们应该如何识别该命令中的窗口? 这个问题背后的原因是下面的用例: 假设我们有一个wiki来logging我们发现的任何有趣的东西。 有一个键盘快捷键可以让浏览器窗口前面带有我们的Wiki页面,然后开始立即打字,然后用另一个组合键切换到我们以前工作的应用程序 我知道ALT + TAB在最后两个使用的窗口之间切换,但不能支持更复杂的应用程序组合。 例如浏览器+ Eclipse + Wiki 如果有类似的命令,可以从KDE或GNOME界面添加一个快捷方式

为什么内核映射到与进程相同的地址空间?

这是一个需要说明的问题: 为什么内核被说成在进程地址空间? 这可能是一个愚蠢的问题,但它只是popup在我的脑海里。 所有关于进程地址空间和虚拟内存布局的文本都提到进程地址空间为内核预留了空间。 例如在32位系统上,进程地址空间是4GB,其中1GB是为Linux内核保留的(在其他操作系统上可能不同)。 我只是想知道为什么当进程无法直接访问内核时,为什么内核被说成是在进程地址空间中。 为什么我们不说内核具有一个独立的地址空间而不是一个进程,为什么我们不能为内核本身提供一个与进程的页表分开的不同的页表? 我可以得到关于Linux(Debian或Ubuntu)特定操作系统的解释。

在Tomcat上部署war文件

有没有办法在Tomcat服务器上部署一个给定的战争文件? 我想这样做,而不使用Web界面。

在Linux上最好的沙盒Apache方法

我的Apache运行在面向公众的Debian服务器上,对安装的安全性有点担心。 这是一个机器,主持几个空闲时间的爱好项目,所以我们没有谁使用这台机器真的有时间不断地观察上游补丁,保持安全问题等意识,但我想保持坏人出去,或者如果他们进来,把他们放在沙箱里。 那么什么是最好的,易于设置,易于维护的解决scheme? 在Debian上设置一个用户模式的linux sandbox很容易吗? 或者也许是一个chroot监狱? 我想从外面轻松访问sadbox内的文件。 这是对我来说非常清楚,我是程序员而不是系统pipe理员的那个时代之一。 任何帮助将非常感激!

访问Linux用户空间中的硬件寄存器

我想要写在Linux用户空间的OMAP3530硬件寄存器。 请find下面的代码。 Mmap返回错误: 内存映射失败。 错误-1 mmap:权限被拒绝 #include <stdio.h> #include <sys/mman.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #define BASE_ADDRESS 0x48050000 int main() { int mem; unsigned int *value; void *ptr; /* Open /dev/mem */ if ((mem = open ("/dev/mem", O_RDONLY | O_SYNC)) == -1) fprintf(stderr, "Cannot open /dev/mem\n"), exit(1); ptr = mmap (0, 8192, […]

Linux(或RedHat Linux)上的小块分配器可避免内存碎片

我知道在用户应用程序中有一个分配器,而不是在HP-UX 链接文本和Windows XP 低碎片堆上处理大量的小块分配。 在HP-UX上,可以调整分配器,在Windows XP上它认为小于16 K的块的大小很小。 我的问题是,我找不到在Linux上运行的用户程序的这种分配器的任何信息(实际上是RedHat Linux)。 如果有这样一个分配器,我真的想find它可以处理的最大块大小。 更新 我find了jemalloc( http://www.canonware.com/jemalloc/ )。 它处理小,大,巨大的块: http : //www.canonware.com/download/jemalloc/jemalloc-latest/doc/jemalloc.html#size_classes 。

mmap系统调用中MAP_ANONYMOUS标志的用途是什么?

从man页, MAP_ANONYMOUS The mapping is not backed by any file; its contents are initialized to zero. The fd and offset arguments are ignored; however, some implementations require fd to be -1 if MAP_ANONYMOUS (or MAP_ANON) is specified, and portable applications should ensure this. The use of MAP_ANONYMOUS in conjunction with MAP_SHARED is only supported on […]

如果/何时取消分配的堆内存得到回收?

我一直在embedded式Linux系统上运行一夜的内存testing。 使用vmstat我已经观察到,随着时间的推移,空闲内存会稳步下降。 根据procfs中的一些分析,一个进程的堆栈大致以相同的速度增长。 我怀疑有内存泄漏,并在代码中发现了一些经常使用new和delete位置。 但是,我没有看到没有匹配delete调用的new调用。 我再次运行内存testing,今天早上通过以下调用清除了内存caching echo 3 > /proc/sys/vm/drop_caches vmstat中列出的可用内存下降到接近testing开始时的值。 内核是否定期回收未使用的堆页? 如果是这样,除了上面的那个,还有其他的时间呢? 空闲内存可能低于某个阈值时

如何在bash中导出系统范围环境variables

我需要从当前作用域之外的bash脚本中设置一个系统环境variables。 所以你通常会像这样输出环境variables: 导出MY_VAR = / opt / my_var 但是我需要环境variables在系统级别可用。 这可能吗?

将terminal光标返回到包装启用的行首

我正在写一个filter(在一个terminal输出的pipe道中),有时候需要“覆盖”刚刚发生的一行。 它的工作原理是将stdin传递给标准的字符,直到达到\n ,然后调用特殊的行为。 我的问题是如何回到行的开始。 我想到的第一件事是使用\r或ANSI序列\033[1G 。 但是,如果线条足够长,以便在terminal上进行包装(从而使其滚动),则这些只会将光标移回当前物理线路。 我的第二个想法是跟踪行的长度(从前\n )以来传递的字符数,然后多次echo \b 。 但是,如果行包含控制字符或转义序列(可能还有Unicode?),则会出错。 search所有特殊的序列,并用它来调整我的字符数,是否有一个简单的方法来实现呢?