Articles of 进程

Unix和Linux / proc PID系统

对于操作系统类的介绍,我们介绍了/proc目录以及许多可用于访问存储在/proc中的进程ID中存储的数据的function。 当我尝试了一些在我的学校托pipe的UNIX服务器上学到的命令(还有一些是我查阅的)时,我注意到我创build的一个进程中存在的一些子目录是一个名为“TeX字体指标数据”或.tfm文件。 我想这是我的教授告诉我们如何从状态和地图这样的目录中获取数据时使用的文件types。 当我input命令cat /proc/(PID)/status来查看状态文件时,我得到了一个随机的字符和空白的分类。 当我在我学校的Linux服务器上创build的过程中尝试了相同的命令时,显示了我期望在状态和映射文件中看到的信息。 我的问题是: 为什么Unix服务器从我的进程的/proc/(PID)/status文件中产生随机字符,而Linux服务器给了我同样命令期望的数据? 还有没有办法通过访问/proc目录访问Unix /proc数据?

为什么`ps` list> 2个Java线程/“轻量级进程”当我只创build了两个?

我有一个Java程序: import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class App { static class Worker implements Runnable { public Worker() {} public void run() { while (true) { System.out.println("Sleeping"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) { Executor executor = Executors.newSingleThreadExecutor(); executor.execute(new Worker()); } } 该代码是使用Maven构build的,并使用java -jar […]

对“核心过程”的怀疑

其实我其实不了解的概念之一是内核porocess或内核线程。 在网上search和在SOO类似的问题,我发现以下内容: 什么是内核线程? 答案是: 内核线程是仅在内核模式下运行的内核任务 据我所知,进入“内核模式”的进程必须发出一个系统调用。 所以我不明白这些线程是如何一直在这个模式下运行的。 有人能帮我理解这是如何工作的吗?

从c#和mono启动进程时内存不足

我正在使用Debian安装的embedded式Linux板(Atmel AT91SAM)。 有一个单声道应用程序正在运行,并通过启动一个新的系统进程和bash来调用cat ,从而定期(如每500ms)开关GPIO的输出。 一段时间后,我得到一个“ 内存不足 ”的例外,输出没有被设置一段时间后,它几秒钟后“恢复自己”。 这是不是这样设置pioC10? 如果是这样,我应该如何设置值文件? 可能会发生这种内存exception,因为目前无法访问GPIO? 有没有一个干净的方式来处理过程,或者当方法被自动closures时完成? private void OnTimer1Event(object source, ElapsedEventArgs e) { alternateBlinkTimer1.Stop(); alternateBlinkTimer2.Start(); try { var processStartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = "-c \"echo 1 > /sys/class/gpio/pioC10/value\"" }; System.Diagnostics.Process process = new Process(); process.StartInfo = processStartInfo; process.Start(); } catch (Exception err) { log.Error(err.Message); } […]

Bash:从pid获得规范的path和参数

有没有一种简单的方法来获得某个进程(pid)运行的规范path和参数。 例如,对于进程1445,我想得到: /usr/bin/xclock -digital 我想要做的是: $ ls -l /proc/1445 | grep exe 得到像……. -> /usr/bin/xclock 接着 $ ps 1445 | cut -b 28- | tail -n 1 得到xclock -digital 并把这两个输出放在一起。 我认为这可以工作,但我认为应该有一个更好的方法来做到这一点。 和帮助将不胜感激。

如何在x64 Linux上安装Ruby Shoes?

我最近发现了Ruby Shoes ,这听起来对于像我这样的初学者来说非常有用。 唯一的问题是,我的笔记本电脑是X64,而唯一的Linux套件是I686。 无论如何,我尝试了它,它不适合我,我一直在得到一个错误。 当然,我没有想到它会起作用,但在x64 Linux上仍然有办法使用Shoes? 谢谢!

如何知道在* nix上的Java代码(或C或Python)中的启动和终止进程

我需要在Linux上编写一个进程控制器模块来处理任务,每个任务由多个可执行文件组成。 控制器的input是一个XML文件,其中包含每个可执行文件的path以及要传递给每个可执行文件的命令行参数列表。 我需要实现以下function: 将每个可执行文件作为独立进程启动 能够杀死创build的任何subprocess,独立于其他进程 为了做(2),我想我需要在创build一个进程时捕获这个pid ,来发出一个系统kill命令。 我尝试使用ProcessBuilder访问Java中的pid ,但没有看到简单的方法来做到这一点。 我所有的其他逻辑(把数据库中的任务等信息)都是用Java来完成的,所以我想坚持下去,但是如果有可以用C,C ++或Pythonbuild议的解决scheme,太。

Python中的逐行远程数据传输

我一直在玩subprocess进程模块迭代地发送input文件中的每一行到由下面的命令创build的进程。 ssh -t -A $host 'remote_command' remote_command期望在其STDIN中有一行,在该行上进行一些处理并迭代该循环,直到STDINclosures或达到EOF。 为了达到这个目的,我一直在做的是: process = subprocess.Popen("ssh -t -A $host 'remote_command'", shell=True, stdin=subprocess.PIPE) for line in file('/tmp/foo'): process.stdin.write(line) process.stdin.flush() process.stdin.close() 但是我发现上面的方法不够健壮,因为remote_command经常会提前完成而不处理整个内容(尽pipe有时候相同的代码没有问题就成功了)。 当我采用另一种方法时,情况是一样的,尽pipe非常相似: process = subprocess.Popen("ssh -t -A $host 'remote_command'", shell=True, stdin=file('/tmp/foo')) 所以问题是: 如何确保input文件中的每一行都被Python中的远程机器发送,接收和处理,直到最后?

中断可以这样编程吗?

我正在创build一个可以在后台产生程序的shell。 当一个程序开始使用一定数量的内存,如100MB,我想要一个中断被触发,将导致一个函数运行。 另一种方法是让进程继续运行并检查后台进程的状态。 使用中断似乎使用较less的CPU资源。 那是对的吗? 是否有可能做到这一点? 我正在试图在Linux中这样做。

在linux上的java进程

我已经在linux上运行一个testingjava程序作为testuser如下。 su testuser -c "./java Test" & 当我看到进程时,我看到有2个进程创build。 一个作为root用户,这会产生testuser拥有的其他用户。 # ps -ef | grep Test root 19684 19522 0 19:18 pts/0 00:00:00 su testuser -c ./java Test testuser 19685 19684 1 19:18 pts/0 00:00:00 ./java Test root 19699 19522 0 19:18 pts/0 00:00:00 grep Test 为什么在这里创build2个进程? 即使在我终止了root所拥有的进程后,另一个继续运行。 在这里创build了2个java进程吗? 当我运行我的web应用程序[tomcat-spring]作为testuser时,我只看到一个创build的进程。 为什么只有一个过程?