我正在尝试采用一种简单的方法来跟踪我想使用 python 中的 os 模块运行的定期 mysqldump 命令。我已经写了这个,但在测试中它不会引发异常,即使 mysqldump 命令完成时出现错误也是如此。我对 python 还很陌生,所以我可能会非常接近这个问题,但我想我会尝试指出正确的方向。
db_dump = "mysqldump -u %s -p%s --socket=source_socket --databases %s | mysql -u %s -p%s --socket=dest_socket" % (db_user, db_pass, ' '.join(db_list), db_user, db_pass)
try:
os.system(db_dump)
except:
logging.error("databases did not dump")
else:
logging.info("database dump complete")
Run Code Online (Sandbox Code Playgroud)
os.system 不是一种非常健壮或强大的调用系统命令的方式,我建议使用subprocess.check_output()或subprocess.check_call
IE,
>>> cmd = 'ls -l'
>>> badcmd = 'ls /foobar'
>>> subprocess.check_call(cmd.split())
0
>>> subprocess.check_call(badcmd.split())
ls: /foobar: No such file or directory
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 511, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ls', '/foobar']' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4505 次 |
| 最近记录: |