我正在尝试编写一个等待数据库联机的脚本。 检查数据库连接的脚本是用python编写的,应该每隔5秒激活一次。如果脚本返回0,则主脚本应该继续。
我从来没有写过shell,所以我只能猜测如何让python脚本进入while循环的条件。这是我的尝试,但我不知道如何做对。
python脚本运行良好。
psqltest.py:
#!/usr/bin/python2.4
#
import psycopg2
try:
db = psycopg2.connect("dbname='postgis' user='postgres' host='db' password='postgres'")
except:
exit(1)
exit(0)
我的主shell脚本:
echo waiting for database...
while [ python /root/psqltest.py && echo 0 || echo 1 ]
do
sleep 5
done
错误消息:
1 ]
感谢您帮助我
答案 0 :(得分:2)
shell脚本只是
while ! python /root/psqltest.py; do
sleep 5
done
或鲜为人知的
until python /root/psqltest.py; do
sleep 5
done
答案 1 :(得分:0)
我已经改进了我的脚本,现在bash只调用python脚本并等待它完成,正如Kristof提到的那样。到目前为止这是有效的,但我试图进一步改进它。
#!/usr/bin/python3
#
import psycopg2
import time
import sys
db = None
sys.stdout.write('waiting ')
while db is None:
try:
db = psycopg2.connect("dbname='postgis' user='postgres' host='db' password='...'")
db.close()
except:
sys.stdout.write('.')
sys.stdout.flush()
time.sleep( 5 )
print('')
exit(0)