标签: kill

Python:何时使用pty.fork()与os.fork()

我不确定是否使用pty.fork()os.fork()从我的应用程序生成外部后台进程.(如国际象棋引擎)

如果父节点被终止,我希望生成的进程死亡,就像在终端中生成应用程序一样.

两个叉子之间有什么起伏?

python linux fork kill pty

14
推荐指数
1
解决办法
5103
查看次数

用于强制终止子进程的Java工具/方法

我正在寻找一个允许我强制杀死子进程的Java工具/包/库.

此工具/包/库必须在Windows平台上运行(必需).需要支持Linux/Unix.

我的问题

我的Java代码创建了一个子进程,它根本不会对用于终止子进程的标准Java方法做出反应:process.destroy(),并且,由于我没有子进程的源代码,我无法对其进行编程以更好地处理终止请求.

我已经尝试在调用destroy()之前关闭子进程的错误输入和输出流,并且没有效果.

我甚至尝试将ctrlBreak信号(char = 3)直接传递给child.getOutputStream(),并再次收到相同的结果.

我终于找到的解决方法是:

  1. 在创建时获取子PID这可以通过在子项创建之前和之后区分进程列表在Windows中完成(getRuntime().exec("tasklist /v"))

  2. 使用子PID
    在Windows中发出强制终止系统命令:getRuntime().exec("taskkill /pid " + childPid + " /f")

但是 - 这是复杂的代码我不想调试和维护,加上问题本身,我毫不怀疑,以前遇到过许多其他java开发人员,这让我希望这样的Java工具/包/库已经存在.

我只是不知道它的名字......

PS:我的子进程是由创建的Runtime.getRuntime().exec(cmd),但我使用ProcessBuilder得到了相同的行为.

java kill process

14
推荐指数
1
解决办法
1万
查看次数

Java - Linux的Process.destroy()源代码

我需要检查一下代码,Process.destroy()看看它kill在Linux上是一个什么样的子进程.

有谁知道这个方法的作用或链接到它的来源?我检查了jdk源代码,Process它只是一个抽象类,并且该destroy方法尚未实现,似乎没有链接到任何子类extends或者implements Process.任何帮助将不胜感激.

谢谢,

java linux kill process

14
推荐指数
1
解决办法
5804
查看次数

替换为Service类的finish()方法?杀死它

我之前在几个活动中使用了方法finish()没有问题.

但是当我试图在广播接收器内部调用它时,我从编译器得到错误消息"对于AudioService类型,方法finish()未定义"

AudioService是我的Android应用程序中的Service类的名称.

如果一个服务中没有finish()方法,那么我可以调用什么来杀死这个服务?

service android kill activity-finish

14
推荐指数
2
解决办法
1万
查看次数

杀死挂起超过一分钟的所有R进程

我使用crontask定期运行Rscript.不幸的是,我需要在一个小的aws实例上执行此操作,并且该过程可能会挂起,在彼此之上构建越来越多的进程,直到整个系统滞后.

我想写一个crontask来杀死持续时间超过一分钟的所有R进程. 我在Stack Overflow上找到了另一个答案,我已经调整过,我认为可以解决这个问题.我想出来了;

if [[ "$(uname)" = "Linux" ]];then killall --older-than 1m "/usr/lib/R/bin/exec/R --slave --no-restore --file=/home/ubuntu/script.R";fi
Run Code Online (Sandbox Code Playgroud)

我直接从htop复制了任务,但它没有按照我的预期工作.我收到No such file or directory错误,但我已经检查了几次.

我需要杀死持续时间超过一分钟的所有R进程.我怎样才能做到这一点?

bash ubuntu r kill

14
推荐指数
3
解决办法
1811
查看次数

如何从脚本向脚本发送信号SIGINT?BASH

我想捕获从Script-A.sh发送到Script-B.sh的信号,所以在Script-A.sh中我使用命令

(将SIGINT发送到Script-B.sh)
kill -2 $ PID_Script-B.sh

在Script-B.sh中,我捕获信号并调用函数Clean

陷阱'清洁'2

它不起作用,而是立即杀死Script-B.sh而不执行Clean !!

我还注意到,如果我想将SIGINT从终端发送到任何捕获它的脚本,ctrl-c将会正确捕获,但如果我通过命令指定信号则不会kill -2 $pid_of_script

有没有想过发送SIGINT(ctrl-cVS kill -2 $pid_of_script)的两种方法之间的区别,以及如何将SIGINT从脚本发送到另一个?

问候,

调试器

bash signals kill bash-trap

13
推荐指数
1
解决办法
2万
查看次数

当警报在Perl中跳闸时,我应该如何清理挂孙子进程?

我有一个并行化的自动化脚本,需要调用许多其他脚本,其中一些脚本因为(错误地)等待标准输入或等待各种其他不会发生的事情而挂起.这不是什么大不了的事,因为我抓住那些惊慌失措的人.诀窍是在孩子关闭时关闭那些悬挂的孙子进程.我认为各种各样的咒语SIGCHLD,等待和过程小组都可以做到这一点,但是它们都会阻止而且孙子孙女都没有收获.

我的解决方案有效,但似乎不是正确的解决方案.我对Windows解决方案还不是特别感兴趣,但我最终也需要它.我的只适用于Unix,现在还可以.

我写了一个小脚本,它可以运行同时并行的子节点数和fork的总数:

 $ fork_bomb <parallel jobs> <number of forks>

 $ fork_bomb 8 500
Run Code Online (Sandbox Code Playgroud)

这可能会在几分钟内达到每用户进程限制.我发现的许多解决方案只是告诉你增加每用户进程限制,但我需要这个运行大约300,000次,所以这不会起作用.同样,重新执行等建议以清除流程表并不是我需要的.我想实际修复问题,而不是在它上面拍打胶带.

我抓取进程表寻找子进程并在处理程序中单独关闭挂起的进程SIGALRM,这需要死掉,因为其余的实际代码在此之后没有成功的希望.从性能角度来看,kludgey爬过进程表并不会让我烦恼,但我不介意不这样做:

use Parallel::ForkManager;
use Proc::ProcessTable;

my $pm = Parallel::ForkManager->new( $ARGV[0] );

my $alarm_sub = sub {
        kill 9,
            map  { $_->{pid} }
            grep { $_->{ppid} == $$ }
            @{ Proc::ProcessTable->new->table }; 

        die "Alarm rang for $$!\n";
        };

foreach ( 0 .. $ARGV[1] ) 
    {
    print ".";
    print "\n" unless $count++ % 50;

    my $pid = $pm->start and next; 

    local …
Run Code Online (Sandbox Code Playgroud)

unix perl kill alarm grandchild

12
推荐指数
2
解决办法
1876
查看次数

强制关闭时活动重新启动

我有一个具有单个根Activity的应用程序.我最近引起了我的注意,任何一种强制关闭我的活动导致它重新启动,我不知道为什么会发生这种情况.如果我强制执行未捕获的异常或使用"长按后强制关闭"选项,它们都会产生相同的结果.

我唯一的猜测是某种形式的怪癖与保留对Activity的某些部分的引用有关,只有我在应用程序级别没有任何一些WeakReference条目.

相关的logcat条目:

05-25 08:25:49.137: INFO/ActivityManager(18449): Displayed uk.co.randomicon.rstb/.TreeBuilderActivity: +8s82ms
05-25 08:25:54.222: DEBUG/dalvikvm(18546): GC_EXPLICIT freed 12K, 57% free 3640K/8327K, external 8323K/10136K, paused 72ms
05-25 08:25:55.373: WARN/InputManagerService(18449): Got RemoteException sending setActive(false) notification to pid 19122 uid 10069
05-25 08:25:59.217: DEBUG/dalvikvm(18646): GC_EXPLICIT freed 128K, 48% free 2980K/5703K, external 0K/0K, paused 67ms
05-25 08:26:00.238: DEBUG/dalvikvm(18991): GC_CONCURRENT freed 343K, 51% free 2794K/5639K, external 303K/532K, paused 3ms+3ms
05-25 08:26:02.950: INFO/Process(18449): Sending signal. PID: 19554 SIG: 9
05-25 08:26:02.980: INFO/ActivityManager(18449): Process uk.co.randomicon.rstb (pid 19554) has died.
05-25 …
Run Code Online (Sandbox Code Playgroud)

crash android kill activity-stack android-activity

12
推荐指数
1
解决办法
1万
查看次数

获取进程的PID以杀死它,而不知道它的全名

我正在编写一个Android应用程序.现在我要去应用程序应该杀死进程的部分.但我不知道它的全名或它的PID.我知道命令:

android.os.Process.killProcess(Pid)
Run Code Online (Sandbox Code Playgroud)

android.os.Process.getUidForName("com.android.email")
Run Code Online (Sandbox Code Playgroud)

但我的问题是我不知道该过程的全名.

这是一个本机代码进程,所以不像com.something.something

这个过程是 /data/data/com.something.something/mybinary

但它运行的命令如

/data/data/com.something.something/mybinary -a 123 -b 456
Run Code Online (Sandbox Code Playgroud)

因为这个我不能用

android.os.Process.getUidForName("/data/data/com.something.something/mybinary")
Run Code Online (Sandbox Code Playgroud)

java eclipse android kill process

12
推荐指数
1
解决办法
2万
查看次数

从终端杀死iOS模拟器

我正试图从终端控制台终止iOS模拟器(需要在Jenkins中集成自动UI测试),但每次我尝试命令时:

killall SimulatorBridge
Run Code Online (Sandbox Code Playgroud)

显示等待操作的提示: 在此输入图像描述

问题是模拟器在获取提示操作之前不会被解雇.如何摆脱它?

terminal simulator prompt kill jenkins

12
推荐指数
3
解决办法
1万
查看次数