当进程达到6小时的生命周期时执行脚本


1

我想知道当具有给定PID文件的进程总共达到6小时的生命周期时是否可以执行perl脚本?这可以通过crontab或类似的方式完成吗?

我想执行的perl脚本只是重启进程。

我绝对不知道我怎么会去这样做,但我想抓住TIMEtop


Answers:


1

以下内容将为您提供进程在系统中的已用时间(挂钟)。

ps -p PID -e etime,command

格式不理想,因为格式的变化取决于持续时间; 如果你使用它,你可能会发现它从/ proc / PID / status或类似信息中获取信息

这是我偶尔使用的模式; 如果我担心监控一个有逃跑倾向的过程,那么另一个变化就是rsize ...

这提醒我,也许你的问题可能更好地通过ulimit或timeout命令(或执行相同的包装脚本)之类的东西来解决。

如果您正在使用某些配置管理工具(例如CFEngine),则可以执行操作以响应rsize等指标。


0

一个更简单的方法是从类似的东西中获取ps aux的分钟数

for i in $(pidof sshd); do ps aux | awk '{print $2" "$10}' | grep "^$i" | awk '{print $2}' | awk -F':' '{print $1}' ; done

然后,您可以将其嵌入到脚本中并将其放在cron中以重新启动相应的服务。


0

我想你希望自动执行脚本,这样你就需要一些东西来检查是否已经过了六个小时,并且在它们有的情况下执行一些脚本。

我建议你使用命令watch,它会每隔很多秒执行一个给定的命令:

 watch -n 10 my_script &

watch放在后台(&的含义),从每10秒执行一次命令my_script-n 10的含义)。my_script文件应该是一个bash脚本文件,通过chmod 755 my_script生成可执行文件,该文件检查(根据其他答案中的建议)您的程序是否已达到6小时限制,并采取相应措施。

如果您担心在后台丢失此命令,那么运行它的shell是否应该因任何原因被终止,只需将命令修改为:

  nohup 'watch -n 10 my_script'

除了重新启动之外,它还能生存下去。


不是手表的预期用途(这是一个非常有用的程序)。我建议一个简单的循环会更好,另外通过逃避你想要观看的非平凡命令来消除头痛。while sleep 10; do my_script; done &
Cameron Kerr 2014年

哪种方法最好?循环或cron作业?
Sven
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.