Articles of pipe理员

以PHP的身份运行PHP时,会占用较高的CPU负载

对不起,这个模糊的问题,但我刚刚写了一些执行自己的PHP代码,我敢肯定这是行为不端。 当我在命令行上运行“top”时,它显示给予任何单个进程的资源非常less,但是在40-98%到iowait时间(%wa)之间。 我通常在%us和%sy之间分配约0.7%的资源,其余资源进入空闲进程(通常在20-50%之间)。 这台服务器正在执行MySQL查询,很容易,其他服务器运行相同的查询需要300倍的时间,而且甚至需要通过SSHlogin才能完成……所以尽pipe有一些空闲的cpu时间,似乎很清楚发生了一些非常糟糕的事情。 无论脚本在运行什么,都在更新我的MySQL数据库,但是当它们启动的时候,它似乎成倍地变慢了。 我需要一些想法来作为发射点来诊断发生的事情。 有些我想知道的是: 我如何确认有多less脚本正在运行 无论如何要确认这些脚本实际上正在closures,而不仅仅是“占用”CPU时间和内存? 我应该检查什么样的瓶颈,以确保我不会创build太多的脚本实例,所以这不会再发生。 我意识到这可能是一个巨大的问题,但我更愿意按照提供的任何链接和阅读这个…我只需要知道从哪里开始寻找。

我怎样才能使Bash自动将每个命令的输出pipe道化为像tee这样的东西?

我在$PROMPT_COMMAND使用了一些魔法来自动保存每个运行到数据库的命令: PROMPT_COMMAND='save_command "$(history 1)"' 其中save_command是一个更复杂的function。 最好还要保存每个命令的输出的head / tail ,但我想不出一个合理的方法来做到这一点,除了手动为我input的所有东西手动添加某种shell函数(这样就变成了平均使用复杂的pipe道或布尔expression式更加痛苦)。 基本上,我只是想把/dev/tty的第一行和最后10行保存到一个variables(甚至文件) – 有没有办法做到这一点?

LINUX:是否可以通过局域网进行pipe道传输? 如果是这样,这是可取的吗? 还有什么其他的select?

我目前正在使用C ++为ubuntu服务器创build一个可扩展的服务器devise。 是否可以通过局域网来实现? 快速LAN间通信的最佳select是什么? 那些感兴趣的背景信息:我正在和朋友做一个多人游戏。 这将是基于TCP的。 对于linux来说,让服务器成为多客户端似乎意味着要为每个客户端创build一个新进程,或者通过连接客户端的fdset来select()。 我想把这些方法结合起来,并有一个“pipe理者”过程,通过大概100个客户端来select,并将链上的任何变化报告给一个“任务pipe理者”过程,然后将这个变化分配给其他pipe理者过程。 如果pipe理员和任务pipe理员在同一个方框上,这将可以正常工作,但是如果我想在稍后调整它,我需要一个快速的局域网通信方法。

C ++同时控制另一个程序的I / O

我在我的程序中控制Gnuplot进行拟合和绘图; 然而,为了得到拟合参数,我想使用Gnuplot的打印function: FILE *pipe = popen("gnuplot -persist", "w"); fprintf(pipe, "v(x) = va_1*x+vb_1\n"); fprintf(pipe, "fit v(x) './file' u 1:2 via va_1,vb_1 \n") fprintf(pipe, "print va_1"); // outputs only the variable's value as a string to // a new line in terminal, this is what I want to get … pclose(pipe); 我读了很多关于popen() , fork()等等,但是这里或其他网站上的答案要么缺乏彻底的解释,不涉及我的问题,或者太难以理解(我刚刚开始编程)。 仅供参考:我正在使用Linux,g ++和通常的gnometerminal。

计算进程消耗的最大空闲存储内存

我想比较一组进程dynamic分配的最大堆量。 Linux中是否有任何系统命令或任何自动执行此操作的应用程序? 就像一个监视工具,它运行一个进程并监视进程消耗了多less内存。 不幸的是, size(1)命令只反映了进程和进程记帐报告中关于进程使用的平均内存的文本和数据内存部分。

64位Linux上的进程内存和CPU限制?

可能重复: JVM内存和CPU使用的实际限制? 比方说,金钱不是一个限制因素,我想写一个运行在一台function强大的机器上的Java程序。 目标是让Java程序尽可能快地运行,而不必交换或转到磁盘 。 假设这台电脑有: 1 TB RAM(64个16GB DIMM) 64个处理器核心(8个8核心处理器) 运行64位Ubuntu 在JVM中运行的Java程序的单个实例可以利用这么多的RAM和处理器吗? 是否有任何可能会限制使用和效率的实际考虑因素? 硬件限制(例如,CPU可以在TB内存上一起工作)? OS进程(内存和线程)限制? JVM内存/堆的限制? JVM线程限制? 一个普通的可执行文件(即一个C程序)是否可以利用上述规格? 谢谢,盖伦

我怎样才能将更多的值写入pipe道并读取它们?

我在linux下用c ++编写一个程序,其中一个subprocess应该在pipe道中写入两个长的值,父进程应该读取它们。 到目前为止,我在onlz中设置了两个(命名)pipe道,并通过写入(fd1,&value1,sizeof(long))写入每个pipe道,并通过读取(fd1,&value1,sizeof(long))读取它。 只是一个pipe道都会更好,但我不知道如何做到这一点。 我试过了: write(fd1,&value1,sizeof(long)); write(fd1,&value2,sizeof(long)); 和两个读取,但这似乎导致进程阻塞和彼此等待。 如果有人能给我一个提示,我会很高兴,如何实现这一点。 可能的解决scheme:我写了一个数组中的所有值(因为我知道有多less),那么我只需要一个线/读通话。

我是否应该担心pipe道飞越?

有两个进程(父和子)通过pipe道进行通信。 父母正在等待孩子退出,然后从pipe道的读取端读取数据。 孩子可能会产生相当多的产出。 pipe道是否可能因为太多的未读数据而失败并丢失一些孩子的输出?

如何使用pipeparsing命令的输出

我想处理一个进程的输出,比如ifconfig。 因为你都知道ifconfig的输出是包含inet addr: mask的行的列表:但是我想单独提取ip [来自inet addr:field]并列出它。 有没有可能与pipe道命令? 喜欢 ifconfig | What should be here? 我想把这个命令的输出作为inet addresses列表(如果存在的话,不同的访问点)。

在服务器上设置哪个时区:Etc / UTC或者Etc / Universal?

ubuntu 10.04上提供了两个时区(等/ UTC和等/通用)。 能不能找出哪一个select的Web服务器。 我的理论是Etc / UTC指向特定的时区,而Etc / Universal是语义上指向当前的“基础”时间。 所以通用是select的select。