如何在程序执行之间保留数据

时间:2011-09-13 13:47:05

标签: perl hp-ux

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

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

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

7 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

您可以创建一个单独的进程,在您选择的IPC机制上运行“记住东西”服务。这听起来像是一个相当折磨的“我不想触摸磁盘”的解决方案,但是如果它足以抵消几天的开发工作(实际上,如果你是IPC新手,HP-SUX继续生活直到它的名字)然后一定要阅读 man perlipc 作为开始。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我绝对认为IPC是去这里的方式。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

使用模块Storable序列化Perl数据结构,将它们保存在任何您想要的位置,并在下一个脚本执行期间反序列化它们。