Articles of pid

使用其内核名称空间PID从全局范围中杀死一个进程

现在在Linux内核命名空间方面遇到一些困难,特别是将唯一PID命名空间内的PID与全局PID命名空间内的PID相关联 我需要能够执行以下任一操作: a)使用由命名空间分配的PID从全局范围中杀死一个进程 要么 b)将命名空间特定的PID转换为全局PID,这样我就可以从全局范围中杀死PID 要么 c)启用PID命名空间内的进程向我报告其全局PID,这样我就可以从全局范围中杀死PID 这里有一些关于名称空间场景中包含PID信息的进程结构的讨论。 我不知道如何/如果我可以从用户级应用程序访问这些结构,或者如果我需要通过内核hack添加支持。 为什么? 我有一个当前使用networking命名空间的应用程序。 我正在添加对PID名称空间的支持。 以下是目前的工作原理: 引入PID名称空间之前:主应用程序当前在另一个networking名称空间中启动bash控制台。 然后使用该bash控制台启动程序,并让这些程序报告当前的PID。 当主应用程序想要杀死该networking命名空间中的一个subprocess时,它只是告诉操作系统杀死返回的PID。 使用PID名称空间(中断状态):主应用程序当前在另一个networking和PID名称空间中启动bash控制台。 然后使用该bash控制台启动程序,并让这些程序报告当前的PID。 但是,在全局PID名称空间中报告的当前PID无效(全局名称空间中的PID为56000时可能为10)。 因此,主应用程序不能杀死该networking+ PID命名空间中的subprocess 一如往常,任何指导表示赞赏

如何检查给定PID的进程是否正在运行?

我有一个用C#编写的程序,使用Mono在Linux上运行。 该程序将其PID写入一个文件。 现在我想检查一下这个PID的启动过程是否正在运行。 有没有使用单声道的方法? 如果没有,我怎样才能使用标准的Linuxfunction/工具来完成这个任务? 或者我必须检查/ proc / PID / cmdline?

Linux中的进程id是否为负数?

我正在实现一个在用户空间中调用的系统调用,可以用foo来说。 系统调用访问foo的task_struct(通过全局指针当前),打印它的名称和pid,然后继续到foo的父进程,foo的父进程父进程等。打印所有名称和pid直到init进程。 pid = 1保留给init,pid = 0保留给swapper。 根据swapper的task_struct,它的父进程就是它自己。 Swapper(或sched)总是有pid = 0,并始终是init的父进程? 所有的pid都是非负的吗? 我可以做出这样的假设吗?

execve:如何用多个命令而不是单个命令初始化char * argv ?

execve:如何用多个命令而不是单个命令初始化char *argv[ ] ? 如果我想执行4个命令,我可以使用下面的语句吗? char *argv[4][ ] = { {…}, {…}, {…} }; 而使用execve来执行它们,我可以使用一个从1到4的variables的循环吗?

如何捕获从init.d运行的linux守护进程的pid

我已经启动了一个服务守护进程,通过运行二进制文件(用C ++编写)通过脚本文件保存rc5.d。 但我不确定如何捕获守护进程的pid,并将其存储在/var/run/.pid中的pid文件中。 这样我可以使用pid来终止。 我怎样才能做到这一点?

在Python中自动重启系统

我需要检测程序崩溃或没有运行使用Python并重新启动它。 我需要的方法不一定依赖作为父进程的Python模块。 我正在考虑实现一个while循环,实质上是这样 ps -ef | grep process name 当这个过程没有被发现时,它又开始了。 也许这不是最有效的方法。 我是新来的python所以可能有一个python模块已经这样做。

在Python中,如果不使用/ proc文件系统,我该如何判断给定的PID是否正在运行?

假设我有一个PID,比如555.我想看看这个PID是正在运行还是已经完成。 我可以检查/ proc /但我没有访问到我的生产环境。 什么是最好的方法来做到这一点,缺乏像打开“ps”pipe道的东西?

如何运行一个程序,并知道在Linux的PID?

如何运行一个程序,并知道在Linux的PID? 如果我有几个shell相互运行,它们是否都有独立的PID?

我如何确保正在运行的进程正在运行?

背景 : 我有一个linux [1]系统pipe理一系列第三方守护进程,它们的交互仅限于shell [2] init脚本,即只有{start | restart | stop | status}可用。 问题 : 进程可以假设以前运行的进程的PID,通过检查正在运行的进程是否存在进程,检查进程的状态。 例如 : 过程一个PID 123的运行,随后死亡,进程B用PID 123初始化,状态命令用一个不正确的(错误的)“OK”响应。 换句话说,我们只检查是否存在一个PID过程来validation过程是否正在运行,我们假设如果存在一个具有这个PID的过程,那么这个过程是有问题的。 build议的解决scheme : 使用PID询问进程,确保命令/守护进程按照预期的那样运行。 这个解决scheme的问题是,命令和PID都需要匹配; 因此需要保持多位信息并保持同步,并且增加了错误/边缘条件的复杂性。 将PID文件的创build时间与进程的开始时间相关联,如果进程在PID文件创build时间的某个增量范围内,我们可以确定命令/守护进程运行如期。 除了使用该PID运行的进程以外,是否有标准方法来批准进程/ PID文件的真实性? 即我(作为系统)想知道你(stream程)是否正在运行,如果你是我认为你是谁(A而不是B)。 假设我们已经select实施上面提出的第二种解决scheme,PID创build时间和过程开始时间之间的置信区间/增量是合理的吗? 在这里,合理的手段可以接受types1 /types2错误之间的妥协。 [1] CentOS / RHEL [2] Bash

如何杀死在Linux上运行循环?

我正在使用Linux,我已经在Linuxterminal上执行了for循环,如下所示: for i in `cat fileName.txt` do echo $i vim $i done fileName.txt是一个文件,其中包含我在vim编辑器中逐一打开的大量文件条目。 现在我不得不跳过打开其他文件之间(即我必须打破for循环)。 任何build议如何获得循环运行的PID? 并杀死它们。 提前致谢。