假设我有一个PID,例如555。我想查看该pid是否正在运行或已完成。我可以检查/proc/但我无法在我的生产环境中访问它。最好的方法是什么,除了像打开管道到“ps”这样的骇人听闻的东西? 最佳答案 使用os.kill()信号编号为0的函数。如果进程pid存在,则调用将成功,否则将引发OSError异常:try:os.kill(pid,0)print("processexists")exceptOSError:print("processdoesnotexist")我系统上的kill(2)文档说:Thekill()functions
我正在尝试制作一个应用程序来检查此特定应用程序是否正在运行,然后在指定的时间后终止该应用程序。我打算获取应用程序的pid。如何获取应用程序的pid?谢谢 最佳答案 你可以试试ps-aux|grepfoobar用于获取pid,然后针对它发出kill命令,或者您可能想使用pkillfoobar,在这两种情况下,foobar都是您要终止的应用程序的名称。 关于java-UbuntuJava:Findaspecificprogram'spidandkilltheprogram,我们在StackO
如何在Linux中运行一个程序并知道它的PID?如果我有多个shell相互运行,它们是否都有单独的PID? 最佳答案 Greg'swiki救援:$!是最后一个后台进程的PID。kill-0$PID检查$PID是否仍在运行。仅将此用于由当前进程或其后代启动的进程,否则PID可能已被回收。wait在继续之前等待所有child退出。实际上,只需阅读链接-一切都在那里(以及更多)。$$isthePIDofthecurrentshell.是的,每个shell都有自己的PID(除非它是一些不fork来创建"new"shell的自制shell)。
我面临一个关于从我的php代码中终止Linux进程的问题。我在后台使用proc_open()函数从我的php代码运行Scrapy工具。它工作正常,但现在我想使用它的进程ID终止这个进程。为此,我使用exec("sudokill-9$pid");其中$pid是我从我的php代码中获取的进程ID。问题是这个进程代表apache用户运行。我认为可能存在一些权限问题,所以我将apache用户添加到sudoers文件中,就像这样apacheALL=(ALL)NOPASSWD:ALL但我仍然无法杀死它。不知何故,相同的kill命令在我的putty控制台中起作用。我的代码在AmazonEC2实例上。
使用重定向到文件的标准输出执行脚本。所以/proc/$$/fd/1应该指向那个文件(因为stdoutfileno是1)。但是,该文件的实际fd是11。请解释原因。这是session:$cathello.sh#!/bin/sh-els-l/proc/$$/fd>&2$./hello.sh>/tmp/1total0lrwx------1ngausers64May2822:050->/dev/pts/0lrwx------1ngausers64May2822:051->/dev/pts/0lr-x------1ngausers64May2822:0510->/home/me/hello.sh
我checkoutKernelAPIs,Part1:Invokinguser-spaceapplicationsfromthekernel,和Executingauser-spacefunctionfromthekernelspace-StackOverflow-这是一个小的内核模块,callmodule.c,演示了://http://people.ee.ethz.ch/~arkeller/linux/code/usermodehelper.c#include#include#include#include#includestaticint__initcallmodule_init(v
是否有一种合理的方法来映射pthread_t值(从pthread_create()或std::thread::native_hanle()返回)>)到Linux中的pid(tid)?在有人重复快乐之前,这不是寻找线程自己的pid(这可以用gettid()完成)。疯狂的方法是以某种方式强制线程调用gettid()并传递结果,但这太麻烦了。我想到的一个可能的应用程序是协调在程序中创建的线程(其中pthread_t可用)与ps-T提供的输出。 最佳答案 一种(复杂的、不可移植的、特定于Linux的、轻微破坏性的)将pthread_t映射到
我有一个python脚本,它使用带有os.kill的SIGSTOP和.SIGCONT命令来暂停或恢复进程。有没有办法判断相关的PID是处于paused还是resumed状态? 最佳答案 您可以从/proc目录(/proc/)中找到有关进程的信息。具体来说,你可以用这个python表达式找到它的运行状态:open(os.path.join('/proc',str(pid),'stat')).readline().split()[2]=='T'编辑:下一个表达式修复了原始错误(可能很少见):re.sub(r'\(.*\)','()',o
我想用一个程序启动几个子进程,即模块foo.py启动多个bar.py实例。因为有时我必须手动终止进程,所以我需要进程ID来执行kill命令。即使整个设置非常“脏”,如果进程是通过os.system启动的,是否有一个好的pythonic方法来获取进程的pid?foo.py:importosimporttimeos.system("pythonbar.py\"{0}\&".format(str(argument)))time.sleep(3)pid=???os.system("kill-9{0}".format(pid))bar.py:importtimeprint("bla")time.
我的nginx没有在80端口上启动。我添加了以下详细信息:$nginx-sreload2016/03/2316:11:27[error]24992#0:invalidPIDnumber""in"/run/nginx.pid"$ps-ef|grepnginxroot250572840016:16pts/100:00:00grep--color=autonginx$kill-925057bash:kill:(25057)-Nosuchprocess$servicenginxstartNothing..请提供解决方案.. 最佳答案 尝试在