2008-12-21 127 views
2

我管理Unix系統,有時像CGI腳本這樣的程序永遠運行,有時會消耗大量CPU時間並浪費資源。殺死長時間運行失控程序的程序

我想要的程序(通常從cron調用),它可以殺死這些逃逸,根據以下標準(與AND和OR的組合):

  • 名稱(由正則表達式給定)
  • CPU時使用
  • 經過的時間(其被阻塞在I/O程序)

我真的不知道該怎麼在這種節目類型的搜索引擎。我當然可以用Python自己寫,但我很懶,可能有一個很好的程序已經存在?

(我沒有標記我用語言名稱的問題,因爲在Perl或Ruby或程序的任何會工作爲好)

回答

0

大多數watchdig這樣的程序或庫只是想看看是否給定進程正在運行,所以我會說你最好寫自己的,使用現有的庫提供過程信息。

4

嘗試使用系統級配額執行。大多數系統將允許爲不同用戶設置每個進程的CPU時間限制。

實例:

  1. Linux操作系統:/etc/security/limits.conf
  2. FreeBSD的:/etc/login.conf

CGI腳本通常可在他們自己的用戶ID來運行,例如使用mod_suid爲Apache。

+0

在這種情況下,它是通過CGI運行的Apache,我毫不猶豫地懲罰,因爲一些腳本的用戶的httpd。根據程序的不同,可能會更改我的Apache安裝程序以使其他用戶運行CGI?從來沒有嘗試過。 – bortzmeyer 2008-12-21 21:03:35

+0

是的,你可以用mod_suid來完成。 – 2008-12-22 07:36:16

相關問題