0

我是一个虚拟主机所有者,我现在不知道为什么,但是我有一些 php 脚本启动了好几个小时(作为个人已知的客户),所以我认为某处存在错误。

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

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

谢谢你的帮助。

4

2 回答 2

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 代码进行重大更改),将 PHP 作为 CGI 运行应该允许您监控实际的脚本执行,因为每个 CGI 请求都会产生一个单独的 PHP 解释器进程并且您应该能够区分它们正在执行的脚本。但是请注意,CGI 是最不有效的设置(其他是 mod_php 和 FastCGI)。

于 2012-06-14T10:33:06.740 回答
1

您可以使用该ps -aux命令列出包含一些详细信息的进程。

您还可以查看ps手册页

也可能会有所帮助。

于 2012-06-14T09:57:45.533 回答