标签: kill-process

在流程终止时释放资源

当进程被例如任务管理器杀死时,如何释放资源?有没有办法在进程关闭之前调用函数?

.net c# process kill-process

6
推荐指数
1
解决办法
3067
查看次数

防止Linux内核使用非常大的堆来查杀Java进程

运行Ubuntu 12.04.3 LTS,32核244GB.它的亚马逊EC2内存实例和Java 1.7u25

我的java进程使用-Xmx226g运行

我正在尝试使用CQEngine创建一个非常大的本地缓存,到目前为止它的速度非常快,有30,000,000条记录.当然,我会添加一个驱逐策略,允许垃圾收集清理被驱逐的旧对象,但真的试图在这里限制:)

在查看jvisualvm时,总堆大约为180GB,即将死亡40GB.我应该能够挤出更多.

并不是说我不希望内核在资源耗尽的情况下杀死一个进程,但我认为它早就杀了它并希望尽可能地挤压内存使用量.

ulimit输出如下......

ubuntu@ip-10-156-243-111:/var/log$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 1967992
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max …
Run Code Online (Sandbox Code Playgroud)

java linux memory kill-process

6
推荐指数
0
解决办法
1012
查看次数

任务管理器中的"结束任务"始终设置CloseReason.UserClosing

如果客户试图强制关闭应用程序,我想记录.我知道没有机会抓住进程杀死.但是应该可以通过主窗体关闭事件来了解'CloseReason.TaskManagerClosing'的原因.

但是我在Windows 8.1下做的任何测试我总是得到一个CloseReason.UserClosing原因.但在这种情况下(与法线CloseReason.UserClosing相比)我大约0.2秒运行用户代码后我的程序被杀!

这是Windows 8.1中的新行为吗?

taskmanager kill-process winforms

6
推荐指数
1
解决办法
956
查看次数

os.kill没有处理衍生过程

我编写了自己的基于Python的作业调度程序,它使用多处理模块来生成新的作业.我正在尝试使用一种功能来杀死正在运行的进程os.kill,但它无法正常工作.我的(简化)代码如下所示:

from multiprocessing import Process
import os
...
p = Process(target=self.start_job, args=(run_dir,cmd,))
p.start()
...
def start_job(self,run_dir,cmd):
        os.chdir(run_dir)
        os.system(cmd)
        print os.getpid()
        ...
Run Code Online (Sandbox Code Playgroud)

我想把这个输出的pid(例如3064)和另一个python会话运行:

import os, signal    
os.kill(3064, signal.SIGTERM)
Run Code Online (Sandbox Code Playgroud)

os.kill如果我在父/产生进程的pid上运行它,它会起作用,但如果我在子/生成进程的pid上执行它,它就不起作用.除了SIGTERM,我还尝试了许多其他信号,如SIGKILL,SIGQUIT等.它们都没有工作.任何帮助将不胜感激.

python multiprocessing kill-process

6
推荐指数
1
解决办法
9613
查看次数

如何杀死spacemacs中的进程

我最近觉得有必要为我的erlang/elixir项目使用Spacemacs.(在eclipse上编写Erlang编码).

现在我对Spacemacs感觉更舒服,我对如何处理流程有疑问.

我在代码上犯了一个错误并且有一个无限循环.我在控制台上杀了它,但我想知道如何在spacemacs中做同样的事情.我发现SPC ap让我有可能列出所有正在运行的进程.

如果有可能在这个菜单中杀死一个正在运行的进程,可以请有人解释我(我是spacemacs/emacs的完全初学者)吗?

问候

皮埃尔

emacs kill-process spacemacs

6
推荐指数
1
解决办法
1351
查看次数

Python多处理:异常时如何关闭多处理池

我正在使用python多重处理来拆分较长的进程之一并并行运行。它工作正常,除非其中一个子进程中有例外,在这种情况下,进程池未关闭,我仍然可以在服务器上看到这些进程。

这是代码:

from multiprocessing import Pool
pool = Pool(processes=4)
from functools import partial
param_data = "Test Value"
func = partial(test_function, param_data)
r = pool.map(func, range(3))
pool.close()

def test_function(param_data,index):
   try:
      # The process here;
   except Exception as e:
      # Close the process pool;
Run Code Online (Sandbox Code Playgroud)

在给pool.close除块之外时,它说

NameError:全局名称“池”未定义

我尝试使用以下代码杀死Exception上的进程。

    except Exception as e:
       import os
       import signal
       pid = os.getpid()
       os.kill(pid, signal.SIGTERM) 
Run Code Online (Sandbox Code Playgroud)

但是我仍然可以在服务器上看到该进程。这仍然不是最好的解决方案,因为这只会终止遇到异常的子进程,而其他进程仍会继续。

我希望所有进程都在完成时终止,无论它们是否遇到异常。

我正在运行Python2.7

ps:我无法在服务器上安装像psutil这样的新库,我正在尝试使用标准python库的解决方案。

我在这个论坛上检查了一些类似的问题,例如自动终止进程和子进程,但它们并不是真正的问题。

python multiprocessing kill-process

6
推荐指数
1
解决办法
4358
查看次数

R闪亮的未来:计划(多进程)/计划(多核)+杀死长时间运行的进程

我写这篇文章是为了寻求一些帮助,使用计划(多进程)或计划(多核)并在我闪亮的应用程序中杀死长时间运行的进程.该应用程序具有多个未来事件(长时间运行的进程),这些事件在单击其相应的actionButton时运行.下面是app中服务器函数中使用的future()命令的示例应用程序.我一直在使用stopMulticoreFuture(fut)来杀死进程.

library(shiny)
library(shinydashboard)
library(promises)
plan(multicore)
library(ipc)
sidebar <- dashboardSidebar(width = 200, sidebarMenu(id = "tabs",
                                                     menuItem("File", tabName = "tab1", icon = icon("fas fa-file"))))
body <- tabItem(tabName = "tab1",h2("Input File"),
                fluidRow(tabPanel(
                    "Upload file",
                    value = "upload_file",
                    fileInput(
                      inputId = "uploadFile",
                      label = "Upload Input file",
                      multiple = FALSE,
                      accept = c(".txt")
                    ),
                    checkboxInput('header', label = 'Header', TRUE)
                  ),
                  box(
                    title = "Filter X rows",
                    width = 7,
                    status = "info",
                    tabsetPanel(
                      id = "input_tab",
                      tabPanel(
                        "Parameters",
                        numericInput(
                          "nrows",
                          label = "Entire number …
Run Code Online (Sandbox Code Playgroud)

asynchronous r kill-process shinydashboard

6
推荐指数
1
解决办法
537
查看次数

如何在应用程序/活动被杀死时避免系统查杀服务

我有一个activity和一个应用程序service.如果我在运行的activity同时杀死service它也会被杀死.对我来说,服务不会被杀死是非常重要的.如何使当系统杀死(或者我通过清除"最近的应用程序"列表杀吧)activityservice仍然有效,直到它完成它的工作?提前致谢!

service android system kill-process android-activity

5
推荐指数
1
解决办法
8178
查看次数

如何使用一个bash命令终止在gulp中运行的所有服务器

我创建了一个gulpfile.js启动我的服务器,其内容可以在下面看到.

gulp.task('default', function () {
    if(!fs.statSync('/etc/aptly.conf').isFile()){
    process.exit();
    return;
    }

    console.info('Starting static file server SimpleHTTPServer on 0.0.0.0:8080');
    aptly_static = spawn('python', ['-m', 'SimpleHTTPServer', '8080'], {'cwd': '/opt/aptly/public', 'stdio': 'inherit'});

    console.info('Starting Django runserver on 0.0.0.0:8000');
    django = spawn('python', ['manage.py', 'runserver', '0.0.0.0:8000'], {'stdio': 'inherit'});

    console.info('Starting Aptly api serve on 0.0.0.0:4416');
    aptly_api = run('aptly api serve -listen="0.0.0.0:4416"').exec().pipe(gulp.dest('/tmp/aptlylog'));

    return watchLess('src/**/*.less')
    .pipe(debug())
        .pipe(reLess)
        .pipe(gulp.dest('dist/dist'));
Run Code Online (Sandbox Code Playgroud)

问题是如果由于任何原因导致较少的预处理器崩溃,gulpfile.js守护程序退出的很差.子进程python manage.py runserver python -m SimpleHTTPServer aptly api serve仍将运行.

我不得不通过使用ps -aux | grep runserver类似的方法来煞费苦心地终止这些,以找到要删除的PID sudo kill -9 $PID …

django bash kill-process gulp gulp-watch

5
推荐指数
1
解决办法
1675
查看次数

尽管进程已死,为什么仍会收到子进程资源警告?

我一直在尝试找出如何启动不同的子流程实例,然后杀死它们然后创建新的实例。父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启动的python子进程

但我不确定为什么会收到此消息。我是否成功终止了子进程?我计划启动并杀死其中许多人。


注意我不知道或不需要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)

以及上述内容的不同排列方式,但似乎没有任何效果。有什么建议吗?

python subprocess kill kill-process

5
推荐指数
1
解决办法
766
查看次数