等待python脚本返回0
我正在尝试编写一个脚本,等待数据库联机。 检查数据库连接的脚本是用python编写的,应该每5秒激活一次。如果脚本返回0,则主脚本应继续 我从未在shell中编写过代码,因此我只能猜测如何将python脚本置于while循环中。这是我的尝试,但我不知道如何做对 python脚本运行良好 psqltest.py:等待python脚本返回0,python,sh,Python,Sh,我正在尝试编写一个脚本,等待数据库联机。 检查数据库连接的脚本是用python编写的,应该每5秒激活一次。如果脚本返回0,则主脚本应继续 我从未在shell中编写过代码,因此我只能猜测如何将python脚本置于while循环中。这是我的尝试,但我不知道如何做对 python脚本运行良好 psqltest.py: #!/usr/bin/python2.4 # import psycopg2 try: db = psycopg2.connect("dbname='postgis' user=
#!/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 ]
感谢您的帮助我已经改进了我的脚本,现在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)
我已经改进了我的脚本,现在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)
shell脚本将是
while ! python /root/psqltest.py; do
sleep 5
done
或者是鲜为人知的
until python /root/psqltest.py; do
sleep 5
done
shell脚本将是
while ! python /root/psqltest.py; do
sleep 5
done
或者是鲜为人知的
until python /root/psqltest.py; do
sleep 5
done
OT,但是你有充分的理由使用python 2.4吗?不太可能,我想我也可以使用python 3。用python编写循环代码,并在连接成功时让它将控制权返回到shell脚本不是更容易吗?请在要求人调试你的代码之前尝试一下。OT,但是你有充分的理由使用python 2.4吗?不太可能,我想我也可以使用python 3。用python编写循环代码,并在连接成功时让它将控制权返回到shell脚本不是更容易吗?请在要求人类调试代码之前尝试一下。