我在 HP-UX 机器上运行 perl 脚本。该脚本将每 15 分钟执行一次,并且需要将其结果与上次执行的结果进行比较。
我需要在执行之间存储两个变量(IsOccuring 和 ErrorCount)。做这个的最好方式是什么?
编辑说明:
它仅将最近的执行与当前执行进行比较。
重新启动之间是否丢失值无关紧要。
触摸文件系统几乎是禁区。
如果您无法触及文件系统,请尝试使用共享内存段。有类似的帮助模块IPC::ShareLite
,或者您可以shmget
直接使用和相关的功能。
您必须将它们存储在一个文件中。这种文件通常保存在 中/tmp
,但是运行 cron 作业的用户可以访问的任何地方都可以。确保您的脚本可以处理文件丢失的情况。
您可以创建一个单独的进程,通过您选择的 IPC 机制运行“记住内容”服务。对于“我不想碰磁盘”,这听起来像是一个相当折磨人的解决方案,但如果它的重要性足以抵消几天的开发工作(实际上,如果您是 IPC 的新手,并且 HP-SUX 继续存在)直到它的名字)然后一定要从 man perlipc开始。
是否必须完全重新执行?你可以让它循环运行并在迭代之间休眠 15 分钟吗?与您不必担心在外部保存值相比,程序永远不会停止。
我绝对认为 IPC 是这里的必经之路。
我会将数据保存在文件中。然后,如果文件存在,我会在脚本中加载最后的结果。
使用模块Storable来序列化 Perl 数据结构,将它们保存在任何你想要的地方,并在下次脚本执行时反序列化它们。