所以ImageMagick有我用于我的(Linux)networking平台处理图像大小调整等的“转换”命令。
有时候这个命令会“卡住”,这意味着它开始占用机器资源,直到整个机器不可用。 login到计算机可能需要几分钟时间。
所以,我正在寻找两个解决scheme之一:
使用这个命令时 – 是否有一种方法可以确定它可能使用多less最大资源?
我可以运行一个cron脚本来识别这些“卡住”的进程并杀死它们吗? 即过滤CPU时间或CPU使用率,并在超过特定阈值时closures。
我可能更喜欢2号解决scheme,因为1号解决scheme仍然可以产生几个这样的进程,每个进程都是有限的,卡住了,一起还会吃掉我的资源。
我无法确定这是什么时候发生的,为什么会发生这种情况,这个系统会长时间呆滞,直到我“转换”,那么一切都很好。 这个命令每小时运行几千次,除非我以某种方式logging每一个用法,不幸的是,我不能说哪一个被卡住了。
所以,基本上,一个shell脚本,识别,杀死和转换卡住日志。
有任何想法吗?
使用这个命令时 – 是否有一种方法可以确定它可能使用多less最大资源?
就在调用convert命令之前,你可以设置一个资源限制的最大CPU时间进程可以使用, convert然后会超过限制后自动被杀死。
这将取决于你最初如何调用命令。 exec可能是不必要的。
#!/bin/sh ulimit -St 60 exec /usr/bin/convert $* ## if exec not present this gets executed after. ulimit -St unlimited
如果在YY秒内CPU使用率大于XX%或者终止运行超过ZZ秒的进程,我创build了一个脚本来杀死arrays中列出的某些进程。
您可以在文件的顶部设置XX,YY,ZZ。
您可以使用ps或top来进行检查。
也有一个干运行模式,检查但不杀。
最后,脚本发送一封电子邮件,如果一些进程被杀害。
这是我在Github上的回购: https : //github.com/padosoft/kill-process
这里有一些截图: 示例输出