我有多个用户在Windows 2003服务器上运行attachemate.我想杀死user_1启动的attachemate.exe而不杀死user_2启动的attachemate.exe.
我想使用VBScript.
我有一个进程名称,我kill()要向该进程发送一个信号,但我需要调用它的PID kill().我只想用:
popen("pidof process_name");
Run Code Online (Sandbox Code Playgroud)
作为最后一件事.有没有其他方法可以找到进程'PID?我能想到的一种方法是向该进程发送套接字请求并询问其PID.
另一种方式对于我正在编写的简单代码来说有点过于复杂:要做pidof命令的源代码实际正在做的事情(它使用函数调用find_pid_by_name()但是它做了很多事情).
如果没有简单的解决方案,我就这样做:
system("pkill <process_name>");
Run Code Online (Sandbox Code Playgroud)
并检查其返回码.但是,在所有Linux机器上都可以获得pkill吗?
我正在使用第三方库来处理大量数据集.这个过程偶尔会进入一个无限循环(或被阻止 - 不知道为什么也不能进入代码).我想在一段时间之后杀死它并继续下一个案例.一个简单的例子是:
for (Object data : dataList) {
Object result = TheirLibrary.processData(data);
store(result);
}
Run Code Online (Sandbox Code Playgroud)
processData通常最多需要1秒钟.我想设置一个计时器,在10秒之后杀死processData()
编辑我会很感激代码片段(我没有使用线程).Executor方法看起来很有用但我不太清楚如何开始.此外,更常规方法的伪代码对我来说太笼统了.
@Steven Schlansker - 建议除非第三方应用程序预期中断,否则它将无效.再次详述和示例将被理解
编辑我从同事Sam Adams那里得到了我想要的精确解决方案,我将其作为答案.它比其他答案更详细,但我会给他们两个投票.我将Sam的标记为已批准的答案
我创建了一个具有ignore_user_abort(true)的php脚本; 在它,它运行在无限循环...我关闭了网页,apache服务器和浏览器..它现在像一个世界末日运行..没有什么似乎阻止它..我怎么阻止它?它在Windows中作为(进程名称)运行的是什么?我搜索了与php或服务器或浏览器相关的术语..似乎没有什么打...
我如何现在"杀死"这个过程?
我正在Windows 7/MinGW中编写一个普通的,无辜的C++/Qt程序.
这是两天内第二次关闭程序后,可执行文件仍在活动进程中,并且无法杀死它(我从命令行和Windows任务管理器中尝试).
一个不便之处是我无法重新链接我的代码,因为二进制代码无法被覆盖,正在运行.
我试图使用Python子进程执行以下等效操作:
>cat /var/log/dmesg | festival --tts &
[1] 30875
>kill -9 -30875
Run Code Online (Sandbox Code Playgroud)
请注意,我正在杀死进程组(由负号前面指示进程ID号),以便终止所有子进程Festival启动.
在Python中,我目前有以下代码,其中两个进程是通过管道创建和链接的.
process_cat = subprocess.Popen([
"cat",
"/var/log/dmesg"
], stdout = subprocess.PIPE)
process_Festival = subprocess.Popen([
"festival",
"--tts"
], stdin = process_cat.stdout, stdout = subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
我应该如何以与上面显示的Bash方式相同的方式杀死这些进程及其子进程?以下方法是不够的,因为它不会杀死子进程:
os.kill(process_cat.pid, signal.SIGKILL)
os.kill(process_Festival.pid, signal.SIGKILL)
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点,也许只使用一个过程?
我正在编写一个具有长期服务的应用程序.
我在服务的onDestroy方法中写了一些状态保存代码.
我的意图是,如果服务因内存压力而被Android杀死,应该调用此方法.
我如何模拟被内存压力杀死的服务?
我试过adb shell am force-stop com.example.app但是onDestroy没有调用服务的方法.
是onDestroy一个明智的服务关闭状态节点?
如果是这样,我如何让onDestroyAndroid调用服务,以进行调试/测试?
我想将SIGUSR1信号发送到我的node.js应用程序以通过终端进行调试。我知道命令kill -SIGUSR1 <pid>
如何为此设置键盘快捷键?如果有关系,我会使用MacO
我一直在尝试找出如何启动不同的子流程实例,然后杀死它们然后创建新的实例。父python进程从不执行,只会杀死子进程。我在SO上跟踪了很多链接,但是一旦父python进程结束,我就会不断收到以下消息:
F/Users/Lucifer/miniconda3/envs/rltp/lib/python3.6/subprocess.py:761: ResourceWarning: subprocess 40909 is still running ResourceWarning, source=self)
Run Code Online (Sandbox Code Playgroud)
这似乎很有趣,因为我做到了,ps但是却一无所获:
PID TTY TIME CMD
7070 ttys001 0:00.06 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp Lucifer
7072 ttys001 0:00.61 -bash
17723 ttys002 0:00.06 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp Lucifer
17725 ttys002 0:00.06 -bash
38586 ttys002 0:00.16 sertop --no_init
Run Code Online (Sandbox Code Playgroud)
我只想开始一个过程:
self.serapi = subprocess.Popen(['sertop','--no_init'],
stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,
preexec_fn=os.setsid,shell=True
,)
Run Code Online (Sandbox Code Playgroud)
并杀死它:
os.killpg(os.getpgid(self.serapi.pid), signal.SIGTERM)
Run Code Online (Sandbox Code Playgroud)
上面的代码本质上是从最上面的答案复制的:
但我不确定为什么会收到此消息。我是否成功终止了子进程?我计划启动并杀死其中许多人。
注意我不知道或不需要shell=True。我只是复制了那个,就是我发布的答案/问题的答案。我宁愿没有那个参数。
根据我尝试的答案:
def kill(self):
self.serapi.wait()
#self.serapi.kill()
self.serapi.terminate()
#os.killpg(os.getpgid(self.serapi.pid), signal.SIGTERM)
#self.serapi.wait()
Run Code Online (Sandbox Code Playgroud)
以及上述内容的不同排列方式,但似乎没有任何效果。有什么建议吗?