【发布时间】:2016-11-04 09:10:25
【问题描述】:
我有一个允许同时运行多个实例的 bash 脚本。但是,存在到 Oracle 数据库的 sqlplus 连接以检索值。如果多个 bash 脚本实例同时获取此值,它们可能会检索到相同的值,因为当第一个实例仍在处理时,第二个实例已经在验证“旧数据”。
我只能想到两个选项,即通过 PIDFILE 锁定功能。缺点是如果用户在 pidfile 被删除之前中止操作,则会导致问题。另一个是基于声明ps -ef | grep 'scriptname' | wc -l 计数的最大进程来锁定整个脚本。但这会锁定整个脚本,而不仅仅是数据库部分。
那么还有其他选择吗?这个与数据库的 sqlplus 连接是否可以以某种方式捕获,以便我可以在其中一个实例执行此函数时暂停多个正在运行的实例?
【问题讨论】:
标签: linux bash shell connection sqlplus