gpt4 book ai didi

sqlite - SGE + sqlite3:错误:数据库已锁定

转载 作者:行者123 更新时间:2023-12-03 17:54:34 29 4
gpt4 key购买 nike

我正在尝试运行在群集(SGE)中使用sqlite3的脚本。

该脚本使用lockfile创建一个锁,填充数据库并释放该锁。

  $cat test.sh

#!/bin/sh
lockfile /commun/data/_tmp.idp448.lock
sqlite3 /commun/data/stats.sqlite "create table if not exists timeBeginDB(target text UNIQUE NOT NULL,inserted int);"
rm -f /commun/data/_tmp.idp448.lock
whoami


/ commun / data /在所有节点上都是可见的。 /commun/data/_tmp.idp448.lock是我创建的一个随机名称,目前是使用我们新集群的唯一名称。

没有qsub脚本可以正常工作:

  [lindenb]$ sh test.sh
lindenb #prints whoami, no error on stderr


调用qsub时:

  $ qsub -cwd -S /bin/sh test.sh
Your job 673 ("test.sh") has been submitted

$ cat test.sh.o673
lindenb #prints 'whoami', so the lock have been created and deleted


$ cat test.sh.e673
Error: database is locked


这是一个sqlite3错误。

您是否有任何想法,建议在SGE方面,是什么原因导致了这种行为差异?

谢谢
皮埃尔

更新:

我已经以root用户身份登录到群集的节点上。以下简单命令失败:
(/commun/data/stats2.sqlite不存在)

ssh root@node02
root@node02's password:
sqlite3 /commun/data/stats2.sqlite 'create table if not exists timeBeginDB(target text UNIQUE NOT NULL,inserted int);'
Error: database is locked


它在〜root下工作:

[root@node02 ~]# sqlite3 stats2.sqlite 'create table if not exists timeBeginDB(target text UNIQUE NOT NULL,inserted int);'
[root@node02 ~]#

最佳答案

根据我在SGE上进行的测试,看来lockfile在整个群集上不起作用。但是,似乎起作用的是在bash-hackers中描述的简单的mkdir锁。

#!/bin/sh
DIR=/commun/data/
LOCK=$DIR/_tmp.idp448.lock
until mkdir $LOCK ; do
sleep 4
done
(date ; hostname) >> $DIR/sge-test
rmdir $LOCK
whoami


使用 lockfile,在sge-test文件中报告的日期彼此非常接近。

关于sqlite - SGE + sqlite3:错误:数据库已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525235/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com