我使用一个调用的程序图像魔术师的命令行命令。这些命令应该立即运行——大概 1 到 2 秒。但是,最近我注意到很多命令都卡住了。
我使用 monit 来监控服务器,并在内存超载时观察某些事情。有什么好方法可以监控 ImageMagick?我想如果进程已经存在 1 分钟,则终止它们。但是,我不想一刀切地杀死所有convert
进程。
我该怎么办?
谢谢!
答案1
ps -ef
您可以解析(或在 BSDish 系统上)的输出ps -axf
来查找启动时间 ( STIME
) 大于 的进程X
,或者您可以使用TIME
(CPU 使用的秒数)。
这个解决方案的实现留给读者作为练习,它相对简单。提示:
- 你可以用 shell 脚本来完成(
for line in top; do ... done
) grep
和awk
(或cut
)是你的朋友STIME
根据进程运行的时间长短更改格式。
如果我们在 24 小时内进行讨论,您不必担心这一点,您可以终止任何不符合 24 小时前开始的预期格式的进程。echo "I want to kill $PID ($line)"
在让它真正地在头部拍摄进程之前,请先测试你的脚本( )!
答案2
是否可以修改 ImageMagick 的调用方式?在执行 ImageMagick 之前使用 ulimit/limit 设置限制将允许您设置 CPU 秒数,内核将为您处理此事。
http://www.cims.nyu.edu/cgi-comment/man.cgi?section=1&topic=limit