Tag: 进程

绘制进程的内存使用情况

有没有人知道一个工具来直观地显示在Ubuntu上选定的进程的内存使用情况? ps aux会显示一个数字快照,但是我真的很喜欢我可以看到的一个改变,因为我锤击这个过程并希望看到意外的行为。 有没有人有任何build议?

为什么我应该使用线程与使用进程?

把一个程序的不同部分分成不同的进程似乎(比方说)要制作一个更优雅的程序,而不仅仅是对所有东西进行线程化。 在什么情况下,让事情在一个线程上运行,而将程序分离到不同的进程中呢? 我应该什么时候使用线程? 编辑 任何关于如何(或者如果)他们在单核和多核上采取不同的行为也是有帮助的。

malloc期间在内核中会发生什么?

面试中我被问到了这个问题。 他们想知道的是,当用户调用malloc(4)分配4个字节的内存时,操作系统(Linux)如何响应? 哪个子系统响应这个系统调用? 我告诉他malloc()将由内存pipe理子系统服务。 malloc()实现将遍历空闲内存列表(物理内存),我们将其称为空闲列表,并find大于或等于4字节的相应块。 一旦find这样的块,它将从空闲列表中删除并添加到使用的列表。 然后,这个物理内存将被映射到进程堆vma结构。 他似乎对这个答案并不满意。伙伴系统如何适应这个问题呢? 任何帮助将不胜感激。

pythonsubprocessPopen环境PATH?

我很困惑如何使用Popen()search可执行文件。 它的作品,如果给予subprocess的绝对path,但我试图使用相对path。 我发现,如果我设置环境variablesPYTHONPATH,那么我可以从该path中获取导入的模块,并且PYTHONPATH在sys.path ,但它似乎没有帮助subprocess.Popen的行为。 我也尝试编辑sitecustomize.py文件,添加PYTHONPATH到os.environ ,就像这样 # copy PYTHONPATH environment variable into PATH to allow our stuff to use # relative paths for subprocess spawning import os if os.getenv('PYTHONPATH') is not None and os.getenv('PATH') is not none: os.environ['PATH'] = ':'.join([os.getenv('PATH'), os.getenv('PYTHONPATH')]) 并通过交互方式,使用ipython或通过从命令行运行脚本来validation启动python时,PYTHONPATH成功显示在os.environ 。 但是, subrocess.Popen 仍然不在那里search可执行文件。 如果没有指定env kwarg,我认为它应该inheritance父母的环境? 接下来,我尝试给env明确,首先通过复制os.getenv ,其次是通过给env={'PATH': '/explicit/path/to/search/from'} ,它仍然没有find可执行文件。 现在我很难过 希望有个例子能更清楚地解释我的问题: /目录/ […]

在os.system()期间会导致“IOError:错误的文件描述符”?

我正在使用一个科学软件,包括一个调用os.system()的Python脚本,用于运行另一个科学程序。 在subprocess正在运行的时候,Python在某些时候打印出下列内容: close failed in file object destructor: IOError: [Errno 9] Bad file descriptor 我相信这个消息是在os.system()返回的同时打印的。 我现在的问题是: 哪些情况会导致这种types的IOError? 这究竟意味着什么? 这对os.system()调用的subprocess意味着什么?

线程和进程与multithreading和多核/多处理器:它们是如何映射的?

我很困惑,但接下来的线程清除了我的疑惑: 多处理,multithreading,超线程,多核 但它从硬件的angular度来处理查询。 我想知道这些硬件function如何映射到软件? 有一点很明显,MultiProcessor(= Mutlicpu)和MultiCore之间没有区别,除了多核以外,所有的cpus都驻留在一个芯片上(die),在多处理器中,所有的cpu都在自己的芯片上并连接在一起。 因此,mutlicore / multiprocessor系统能够在“sametime”执行多个进程(firefox,mediaplayer,googletalk)(不同于在单个处理器系统上切换这些进程的上下文)。 如果它正确。 我很清楚。 但是当multithreading出现时,会出现混乱。 multithreading“是为了”并行处理。 对? 什么是在cpumultithreading中涉及的元素? 图? 对于我来说,利用并行处理两个独立任务的能力,CPU的要求是什么呢? 当人们说线程的上下文切换时。 我真的不明白。 因为如果它的线程的上下文切换,那么它不会并行处理。 线程必须“同时”执行。 对? 我的multithreading概念是:考虑一个单CPU的系统。 当进程是上下文切换到Firefox。 (假设)firefox的每个标签都是一个线程,所有线程都严格同时执行。 不像一个线程已经执行了一段时间,然后又一个线程已经采取,直到上下文切换时间到达。 如果我在无法处理线程的处理器上运行multithreading软件,会发生什么情况? 我的意思是如何处理这样的软件的CPU? 如果一切都很好,现在问题是多less线程? 我想呢,它必须受硬件限制? 如果硬件只能支持2个线程,并在我的进程中启动10个线程。 CPU将如何处理? 优点缺点? 从软件工程的angular度来看,在开发用户在各种系统中使用的软件的同时,如何决定是否应该去multithreading? 如果是这样,有多less个线程?

将多个命令传递给一个命令

我怎样才能将多个命令的标准输出传送给一个命令? 示例1:组合并sorting所有三个回显命令的输出: echo zzz; echo aaa; echo kkk 所需的输出: aaa kkk zzz 示例2:重写以下内容,以便所有命令都使用pipe道在单个命令行中,而不redirect到临时文件: setopt > /tmp/foo; unsetopt >> /tmp/foo; set >> /tmp/foo; sort /tmp/foo

在另一个(已经运行)完成后启动脚本

所以我有一个进程正在运行,这将需要几个小时才能完成。 我想在那个完成之后自动启动另一个进程。 请注意,我不能在第一个脚本中添加一个调用,也不能创build另一个脚本来顺序运行这两个脚本。 有没有办法在Linux中做到这一点? 编辑:一个选项是使用pgrep轮询每x分钟,并检查过程是否完成。 如果是的话,启动另一个。 但是,我不喜欢这个解决scheme。 PS:两者都是bash脚本,如果有帮助的话。

如何通过指定进程名称来获得进程的PID,并将其存储在variables中以便进一步使用?

通过使用“ucbps”命令我能够得到所有的PID $ ucbps Userid PID CPU % Mem % FD Used Server Port ========================================================================= 512 5783 2.50 16.30 350 managed1_adrrtwls02 61001 512 8896 2.70 21.10 393 admin_adrrtwls02 61000 512 9053 2.70 17.10 351 managed2_adrrtwls02 61002 我想这样做,但不知道该怎么做 variables=通过进程名得到进程的PID。 然后使用这个命令kill -9variables。

Linux:处理成服务

我正在尝试将一个Linux可执行文件作为一项服务 我执行我的程序,如下所示 java -jar mytestprogram.jar 创build一个连续运行并提供REST请求的进程。 但是我想把它作为一个服务来运行 service mytestprogram start service mytestprogram stop service mytestprogram status chkconfig mytestprogram on 等什么是最简单的方法呢?