[英]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.