Articles of 进程

确定在Linux上停滞的进程的原因

我试图确定在Linux上停滞的过程的原因。 这是一个电信应用程序,在相当重的负载下运行。 每个T1 T1跨度有一个单独的过程。 每隔一段时间,其中一个进程就会变得无法响应 – 在通常非常繁忙的进程日志中logging一个事件之前,最多可能需要50秒。 这可能是一些系统资源不足的原因。 显而易见的事情 – CPU使用率 – 看起来没问题。 哪个linux工具可能是最好的捕捉和分析这种事情,并尽可能不显眼,因为这是一个高负载的系统? 它似乎需要是stream程而不是系统导向。 也许正在监视/ proc / pid / XX? 在这里顶部似乎不太有用。

在Linux上改变C中的真实进程名称

我目前正在尝试改变一个进程的进程名称,所以我可以用htop,top,…更容易地读取。我想LD_PRELOAD这个代码到另一个进程,所以它被environemtvariables重命名。 我在互联网上发现了很多东西,但没有任何工作: prctl(PR_SET_NAME, "Test"); 这是行不通的,因为htop不尊重这个名字。 Nginx的setproctitle ( Link )不能正常工作,因为它剥离了参数(进程需要的参数)。 我尝试了所有我find的东西,现在我没有想法。 这甚至可能在Linux? 如何?

如何“docker运行”在最小的Linux安装一个shell会话,并立即拆除容器?

我刚开始使用Docker,而且我非常喜欢它,但是我有一个笨拙的工作stream程,我想简化。 当我在Dockerfile脚本上进行迭代时,我会经常在构build之后通过启动bash会话,运行一些命令,发现这样或那样的包没有正确安装,然后返回并调整我的Dockerfile来testing。 比方说,我已经build立了我的形象,并将其标记为buildfoo,我会像这样运行它: $> docker run -t -i buildfoo … enter some bash commands.. then ^D to exit 然后我将有一个容器运行,我必须清理。 通常我只是像这样核实一切: docker rm –force `docker ps -qa` 这对我来说工作正常..但是,我宁愿不必手动删除容器。 任何提示感激地接受! 一些额外的小细节: 运行最小的centos 7映像,并使用bash作为我的shell。

混合使用32位和64位共享对象/库

我偶然在我的x86embedded式Linux系统上混淆了32Bit和64Bit库文件。 我现在试图找出哪个.so文件可能是错误的。 你知道任何分析.so文件的工具吗? 在我的strace日志中,我find了对fstat64()的调用。 哪个.so文件包含fstat()例程? 谢谢

在Go中设置进程名称(如`ps`所示)

以下(正确)不起作用: package main import ( "os" "time" ) func main() { os.Args[0] = "custom name" println("sleeping") time.Sleep(1000 * time.Second) println("done") } 有些语言提供了将进程名称设置为内置function的特性(在Ruby中,例如,只是分配给 $0 )或作为第三方库( Python )。 我正在寻找一个至less在Linux上运行的解决scheme。

需要当前进程的PID,getpid()返回-1

我需要为stream程使用的文件(执行我的C ++程序)提供一个唯一的名称。 在我使用静态string之前,但是当我试图并行运行程序的两个实例时,我意识到他们都在访问同一个文件。 为此,我希望文件名包含创build和使用它的进程的PID。 但是,当我尝试使用getpid() ,我总是得到-1作为返回值。 void accessfile(){ std::cout << "DEBUG: accessfile() called by process " << getpid() << " (parent: " << getppid() << ")" << std::endl; // Code here to create and/or access the file } 当我运行这个时,我得到: DEBUG: accessfile() called by process -1 (parent: 17565) 我检查了ps ux ,而进程17565实际上是我的loginshell。 我如何获得我正在执行的程序的PID? 我在getpid()的手工input中注意到了这些信息: Since glibc version […]

使用Java中的命令行工具进行通信

我想从我的Java程序中使用一个linux命令行工具。 我启动程序并使用Process类获取输出( http://download.oracle.com/javase/6/docs/api/java/lang/Process.html ): /* @param args * @throws IOException */ public static void main(String[] args) throws IOException { Process proc = Runtime.getRuntime().exec("octave"); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); BufferedReader errorReader = new BufferedReader(new InputStreamReader(proc.getInputStream())); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())); int c; while((c = proc.getInputStream().read()) != -1) { System.out.print((char)c); } System.out.println("End"); } 我得到以下输出: GNU […]

线程和进程的不同信号处理程序? 可能吗

几乎没有关于信令的问题。 1)当进程与主线程一起有更多的线程,并且如果信号被提出,那么哪个线程将停止它的处理并继续信号处理程序? 它是主线还是主线? 2)是否有可能为主线程和特定线程之间的相同信号保持不同的处理程序?

Java运行时进程不会“grep”

我在我的Java程序的命令行执行一些命令,它似乎不允许我使用“grep”? 我已经通过删除“grep”部分进行了testing,命令运行得很好! 我的代码不起作用: String serviceL = "someService"; Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("chkconfig –list | grep " + serviceL); 代码工作: Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("chkconfig –list"); 为什么是这样? 是否有某种正确的方法或解决方法? 我知道,我可以parsing整个输出,但是我会发现从命令行执行所有操作更容易。 谢谢。

有一种轻量级的方式来获得Linux中当前的进程数量?

我希望我的(基于C / C ++)程序显示本地系统当前有多less进程的数字指示符。 运行进程数值将经常被查询(例如每秒一次)以更新我的显示。 有一个轻量级的方式来获得这个数字? 显然我可以称之为“ps ax | wc -l”,但是我宁愿不要强制计算机产生一个进程并且parsing几百行文本来创build一个整数。 这个程序主要在Linux下运行,但也可能在MacOS / X或Windows下运行,所以与这些操作系统相关的技术也会有所帮助。 理想情况下,我正在寻找这样的东西,除了在Linux下可用(getsysinfo()似乎更多的是一个Minix的东西) 谢谢你,杰里米