我以下列方式启动我的php脚本:
bash
cd 'path'
php -f 'scriptname'.php
php脚本运行时没有输出。
过了一段时间,php脚本响应:
Killed
我的想法是它到达了memory_limit:ini_set('memory_limit', '40960M');
增加内存限制似乎可以解决问题,但它只会增加优势。
Killed
短语究竟是什么意思?
答案 0 :(得分:7)
你的进程被杀了。可能有很多原因,但很容易丢弃一些更明显的原因。
&
东西如果您的服务器缺乏资源(没有内存,没有交换),内核可能会终止您的进程。这可能正在发生的事情。
无论如何:你的过程正在发出一个应该停止的信号。通常只有几件“事情”可以做到这一点
答案 1 :(得分:2)
您可能在PHP脚本中内存不足。以下是重现该错误的方法:
我正在使用PHP 5.3.10在Ubuntu 12.10上执行此示例:
创建名为m.php
的PHP脚本并保存:
<?php
function repeat(){
repeat();
}
repeat();
?>
运行它:
el@apollo:~/foo$ php m.php
Killed
程序占用100%CPU大约15秒然后停止。看看dmesg | grep php
,有线索:
el@apollo:~/foo$ dmesg | grep php
[2387779.707894] Out of memory: Kill process 2114 (php) score 868 or
sacrifice child
所以在我的情况下,PHP程序打印“Killed”并暂停,因为它由于无限循环而耗尽内存。
<强>解决方案:强>
答案 2 :(得分:1)
Killed
是 bash 表示当一个进程在SIGKILL之后退出时,它与putty无关。
Terminated
是 bash 在SIGTERM之后进程退出时所说的内容。
您没有遇到PHP limits,可能遇到了另一个问题,请参阅:
答案 3 :(得分:-2)
如果你已经在处理与脚本内存和超时相关的php.ini设置,那么可能是它的linux ssh连接终止于活动会话或类似的东西。
你可以使用'nohup'linux命令运行一个免于挂起的命令
shell> nohup php -f 'scriptname'.php
修改: - 您可以添加'&amp;'来关闭会话在命令结束时: -
shell> nohup php -f 'scriptname'.php &> /dev/null &
答案 4 :(得分:-2)
http://en.wikipedia.org/wiki/Nohup
在命令之前尝试使用nohup。
nohup捕获挂断信号而&符号没有(除了shell以这种方式配置或根本不发送SIGHUP)。
通常,使用&amp;运行命令时然后,shell将使用挂断信号(kill -SIGHUP)终止子命令。这可以使用nohup来防止,因为它捕获信号并忽略它,以便它永远不会到达实际的应用程序。
如果你正在使用bash,你可以使用命令shopt | grep hupon,以确定您的shell是否将SIGHUP发送到其子进程。如果它关闭,进程将不会终止,因为您似乎就是这种情况。
有些情况下nohup不起作用,例如当您开始重新连接NOHUP信号的过程时。
nohup php -f 'yourscript'.php