我正在HP-UX盒子上运行perl脚本。该脚本每15分钟执行一次,需要将其结果与上次执行的结果进行比较。
我需要在执行之间存储两个变量(IsOccuring和ErrorCount)。这样做的最佳方式是什么?
编辑说明:
它仅将最近的执行与当前执行进行比较
重新启动之间的值是否丢失无关紧要
触摸文件系统几乎是不受限制的。
答案 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数据结构,将它们保存在任何您想要的位置,并在下一个脚本执行期间反序列化它们。