脚本杀死时间过长

时间:2012-06-14 09:46:35

标签: linux bash shell process

我是一个虚拟主机,我不知道为什么目前,但我有一些PHP脚本启动了很长时间(作为个人知名客户),所以我认为某处有一个错误。

这些脚本正在吃RAM和交换...所以我正在寻找一种方法来列出进程,找到执行时间,如果执行超过10或20分钟就将它们逐个杀死。

我不是bash主人,但我知道bash和pipe。我唯一不知道的是如何列出进程(执行时间和带参数的完整命令行)。实际上,即使在顶部(然后是c),php中也没有参数:/

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

如果您使用mod_php运行Apache,则不会看到单独的PHP进程,因为该脚本实际上是在Apache进程内运行的。如果你作为FastCGI运行,你也可能看不到实际脚本执行的可区分的PHP过程,虽然我没有使用PHP / FastCGI的经验,但可能是错误的。

您可以设置max_execution_time选项,但在运行时可以通过调用set_time_limit()来覆盖它,除非您在Safe Mode中运行。但是,安全模式在PHP 5.3中已被弃用,而在5.4中已被删除,因此如果您使用的是5.4或计划升级,则不能依赖它。

如果您可以与现有客户一起管理它(因为在某些情况下它需要对PHP代码进行非平凡的更改),running PHP as CGI应该允许您监视实际的脚本执行,因为每个CGI请求将产生一个单独的PHP解释器进程,您应该能够区分它们正在执行的脚本。但请注意,CGI是效率最低的设置(其他设置为mod_php和FastCGI)。

答案 1 :(得分:1)

您可以使用ps -aux命令列出具有一些详细信息的流程。

您还可以查看ps man page

This也可能有所帮助。