我有一个连续运行的 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)以获取上次睡眠/唤醒时间由内核记录。
这将比依赖信号做更多的工作。您还可以让助手自行运行并向脚本发送您想要的任何信号。
一个是六个,另一个是六打。