如何从 bash 脚本捕获暂停恢复

如何从 bash 脚本捕获暂停恢复

我有一个连续运行的 bash 脚本(在 osx 上),它当前捕获并处理终止,如下所示

trap onshutdown TERM

我怎样才能让 trap 也像这样处理挂起/恢复

trap onsuspend ?

trap onresume ?

答案1

您正在寻找信号 SIGTSTP 和 SIGCONT。尝试这个:

trap onsuspend TSTP
trap onresume  CONT

答案2

由于程序只是被挂起并且无法可靠地告知,因此我会设置一个命名管道并生成一个哨兵脚本。

它只是每 5 或 15 分钟循环一次,将当前时间戳写入命名管道,然后休眠。

然后,您可以从该管道中读取数据,并在读取之间进行数学计算 - 如果时间跳跃超过一两个 ping,那么您就已经睡着了。

根据您需要时间的准确程度,您可以尾随 /private/var/log/system.log 文件(可能还有 /private/var/log/system.0.log.gz)以获取上次睡眠/唤醒时间由内核记录。

这将比依赖信号做更多的工作。您还可以让助手自行运行并向脚本发送您想要的任何信号。

一个是六个,另一个是六打。

相关内容