【发布时间】:2018-11-23 17:47:21
【问题描述】:
我有一个 shell 脚本,它被触发并在 Linux 系统上一次又一次地定期运行,比如每 45 分钟一次。我需要在这个 shell 脚本的不同运行之间共享某些信息。我可以通过哪些不同的方式来实现这一点?这有点类似于进程间通信。我不想使用磁盘 I/O,所以没有文件创建。我可以在内存中创建一些东西,并且可以让它在一段时间内保持活力,例如早上 7 点到 12 点等。在此期间,脚本运行 20 次,并一次又一次地使用/填充该数据结构。脚本在下次运行时需要使用上一次运行中填充的值。
基本上,我正在寻找像 DB 一样工作的东西,但速度更快,修改成本更低。所以我会把我的数据保存在那个数据库中,所有不同的脚本运行都会读取/修改那个东西,而不是一次又一次地去数据库。 /dev/shm 看起来不错的选择,除非有人建议更好的选择。
【问题讨论】:
-
您可以使用 tmpfs(如 /dev/shm),但它位于虚拟内存中,如果该系统上有其他用途,可能会在 45 分钟内被交换。
echo $BASHPID; $(echo $BASHPID >/dev/shm/foo); cat /dev/shm/foo; rm -f /dev/shm/foo -
@melpomene 我不想使用 I/O 操作,因为这项工作时间紧迫。
-
如果时间紧迫,为什么要为此使用 shell 脚本?
-
内部功能是用java编写的。 Shell 脚本只是定期重复触发主要功能。
-
听起来像是 Redis 的工作——一个内存数据结构服务器,绑定了 shell、PHP、Python、C、C++、Java...
标签: linux bash shell shared-memory