1

我在 HP-UX 机器上运行 perl 脚本。该脚本将每 15 分钟执行一次,并且需要将其结果与上次执行的结果进行比较。

我需要在执行之间存储两个变量(IsOccuring 和 ErrorCount)。做这个的最好方式是什么?

编辑说明:
它仅将最近的执行与当前执行进行比较。
重新启动之间是否丢失值无关紧要。
触摸文件系统几乎是禁区。

4

7 回答 7

5

如果您无法触及文件系统,请尝试使用共享内存段。有类似的帮助模块IPC::ShareLite,或者您可以shmget直接使用和相关的功能。

于 2011-09-13T14:03:10.293 回答
4

您必须将它们存储在一个文件中。这种文件通常保存在 中/tmp,但是运行 cron 作业的用户可以访问的任何地方都可以。确保您的脚本可以处理文件丢失的情况。

于 2011-09-13T13:49:09.363 回答
2

您可以创建一个单独的进程,通过您选择的 IPC 机制运行“记住内容”服务。对于“我不想碰磁盘”,这听起来像是一个相当折磨人的解决方案,但如果它的重要性足以抵消几天的开发工作(实际上,如果您是 IPC 的新手,并且 HP-SUX 继续存在)直到它的名字)然后一定要从 man perlipc开始。

于 2011-09-13T14:08:58.497 回答
1

是否必须完全重新执行?你可以让它循环运行并在迭代之间休眠 15 分钟吗?与您不必担心在外部保存值相比,程序永远不会停止。

于 2011-09-13T13:50:01.803 回答
1

我绝对认为 IPC 是这里的必经之路。

于 2011-09-13T18:39:44.440 回答
0

我会将数据保存在文件中。然后,如果文件存在,我会在脚本中加载最后的结果。

于 2011-09-13T13:50:01.973 回答
0

使用模块Storable来序列化 Perl 数据结构,将它们保存在任何你想要的地方,并在下次脚本执行时反序列化它们。

于 2011-09-13T19:42:24.640 回答