【问题标题】:How to detect if cronned script is stuck如何检测 cronned 脚本是否卡住
【发布时间】:2013-04-16 04:01:21
【问题描述】:

我在 Solaris SunOS 系统上有一些 Perl 脚本,它们基本上连接到网络上的其他节点并获取/处理命令日志。手动运行时,它们 99% 的时间都正确运行,但有时会卡住。在这种情况下,我只是中断它并再次运行。

现在,我打算 cron 它们,我想知道是否有办法检测脚本是否在执行过程中卡住(无论出于何种原因),最好在发生这种情况时立即退出,在为了释放它可能占用的任何系统资源。

非常感谢任何帮助。

【问题讨论】:

  • 脚本挂起是由于远程端间歇性网络问题,这是我无法控制的。
  • 不确定是什么,例如ps 输出看起来像在 Solaris 上,但如果一个进程在 I/O 等待很长时间,这似乎是一个有用的问题指示器。但是,同意修复代码以免卡在阻塞 I/O 状态会更好。
  • 确实,修复代码会好得多,但从更一般的意义上说,我一直在寻找一种方法来检测此类有问题的脚本,特别是在通过 cron 运行时。不过感谢您的建议。

标签: perl unix cron


【解决方案1】:

TMTOWTDI,但有一种可能性:

  1. 在脚本开始时,将进程 ID 写入临时文件。
  2. 在脚本结束时,删除临时文件。
  3. 在另一个脚本中,查看这些临时文件中是否有任何超过几分钟/几小时的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多