繁体   English   中英

如果过度使用内存,内核将杀死哪个进程? 孩子还是父母?

[英]Which process will be killed by kernel in case of memory over use? child or parent?

让我在这里介绍一个小背景:

我正在使用shell_exec函数通过PHP启动一个ruby脚本(script_launcher.rb),并且在该ruby脚本中,我正在这样做:

spawned_process_id = spawn("ruby actual_script.rb > /dev/null" ) 
Process.wait spawned_process_id

然后根据Process :: Status Object我在我的红宝石脚本中响应。

这将启动服务器上的三个进程:1)通过“ ruby​​ script_launcher.rb”的PHP脚本2)通过派生功能,例如“ sh -c ruby​​ Actual_script.rb> / dev / null” 3)通过“ ruby​​ actual_script.rb”

现在我的问题是,如果我的actual_script.rb正在吞噬RAM中的大量内存,那么以上哪个进程将被内核杀死。

实际的问题在这里Process :: Status对象正在存储spawned_process_id(进程2)的状态,但是如果内核正在杀死进程3,则我的逻辑给出了成功,这绝对是错误的情况。

任何解决方案或参考都将有所帮助。

如果没有特殊配置,我认为linux不会自动杀死进程。 通常,它是无法从系统中获取更多内存的进程本身杀死(也许是通过不处理异常)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM