我使用的是Ubuntu 12.04。我想知道如何通过进程的PID对其进行操作。我不知道这是否可能。如果可能的话,请帮我。操作是指进程的状态、属性以及通过PID向进程发送命令和数据。
EDIT:状态是指它的工作统计数据,例如它消耗了多少RAM。属性意味着信息重新分级过程。这里我想知道的主要内容是通过PID发送命令/数据进行处理。
procfs是您应该了解的内容。它提供了许多有关流程的信息。这是proc(5)的手册页。基本上,你cd到/proc/$PID
,所有这些伪文件都包含你应该能够查看的信息
否则,一个好的程序是top
,甚至更好的是htop
。它可以发送各种信号,你可以观察到很多信息(状态、内存使用情况、cpu使用情况等)。这真的很棒。
除此之外,还不清楚你想做什么,所以我还是很普通。如果你想像sarnold所说的那样进行IPC(进程间通信),信号可能是最好的方法,或者mmap。(内存映射文件)
不同的程序将进程id作为参数的方式不同。主页是你在这里帮忙。
现在,例如top
将提供大部分基本的系统统计信息。要获得进程的最高结果,例如X
,此命令将为您提供所需的结果top -n1 -b -p <pid of X>
此外,/proc/<pid>
dir将拥有所有必要的系统统计信息,您只需要知道在哪里以及如何读取这些数据。
ps、kill和top常用于与流程交互,请阅读它们的手册页。
ps提供快照,通常从进程名称中获取pid,不过:
例如ps aux | grep -i sshd
top提供半连续反馈(如可配置的windows任务管理器…sorta)
在我看来,top可以很好地了解mem的用法。不过,您需要使用top的交互式命令来配置最佳输出。按"o"表示排序,按"f"表示字段
kill在默认情况下发送SIGTERM(或者它停止进程的东西),或者使用kill-9。如果proc处理程序忽略SIGTERM,kill-s SIGNAL可以用来发送ANY信号,就像SIGSTOP(停止proc)和SIGCONT(继续proc)一样