当进程被例如任务管理器杀死时,如何释放资源?有没有办法在进程关闭之前调用函数?
运行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) 如果客户试图强制关闭应用程序,我想记录.我知道没有机会抓住进程杀死.但是应该可以通过主窗体关闭事件来了解'CloseReason.TaskManagerClosing'的原因.
但是我在Windows 8.1下做的任何测试我总是得到一个CloseReason.UserClosing原因.但在这种情况下(与法线CloseReason.UserClosing相比)我大约0.2秒运行用户代码后我的程序被杀!
这是Windows 8.1中的新行为吗?
我编写了自己的基于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等.它们都没有工作.任何帮助将不胜感激.
我最近觉得有必要为我的erlang/elixir项目使用Spacemacs.(在eclipse上编写Erlang编码).
现在我对Spacemacs感觉更舒服,我对如何处理流程有疑问.
我在代码上犯了一个错误并且有一个无限循环.我在控制台上杀了它,但我想知道如何在spacemacs中做同样的事情.我发现SPC ap让我有可能列出所有正在运行的进程.
如果有可能在这个菜单中杀死一个正在运行的进程,可以请有人解释我(我是spacemacs/emacs的完全初学者)吗?
问候
皮埃尔
我正在使用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库的解决方案。
我在这个论坛上检查了一些类似的问题,例如自动终止进程和子进程,但它们并不是真正的问题。
我写这篇文章是为了寻求一些帮助,使用计划(多进程)或计划(多核)并在我闪亮的应用程序中杀死长时间运行的进程.该应用程序具有多个未来事件(长时间运行的进程),这些事件在单击其相应的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) 我有一个activity和一个应用程序service.如果我在运行的activity同时杀死service它也会被杀死.对我来说,服务不会被杀死是非常重要的.如何使当系统杀死(或者我通过清除"最近的应用程序"列表杀吧)activity的service仍然有效,直到它完成它的工作?提前致谢!
我创建了一个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 …
我一直在尝试找出如何启动不同的子流程实例,然后杀死它们然后创建新的实例。父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)
以及上述内容的不同排列方式,但似乎没有任何效果。有什么建议吗?
kill-process ×10
python ×3
.net ×1
android ×1
asynchronous ×1
bash ×1
c# ×1
django ×1
emacs ×1
gulp ×1
gulp-watch ×1
java ×1
kill ×1
linux ×1
memory ×1
process ×1
r ×1
service ×1
spacemacs ×1
subprocess ×1
system ×1
taskmanager ×1
winforms ×1