在 Ubuntu 上这个命令行:
sudo netstat -tap | grep mysql
如果 MySQL 正在运行,则返回类似的内容:
tcp 0 0 localhost:mysql *:* LISTEN 6732/mysqld
如果不是,什么都没有。
我正在使用 subprocess 从 python 代码中找出 MySQL 是否启动,方法是在 netstat 返回的内容中查找“LISTEN”,这样做:
import subprocess
msqlr = subprocess.Popen(["sudo netstat -tap | grep mysql"], stdout=subprocess.PIPE).communicate()[0]
msqlrLines = msqlr.split("\n")
vals = msqlrLines[0].split()
print "vals[0] : %s" % vals[0]
if vals[0][-2] == "LISTEN":
print "OK - MySQL is running."
else:
print "Not OK - MySQL is not running."
当我运行它时,它返回:
OSError: [Errno 2] No such file or directory
当在同一个 subprocess.Popen... 我使用一个单词参数(比如说“df”)——它工作正常。如果参数不止一个词(即“df -h /”或像这里的“sudo netstat -tap | grep mysql”)——我会收到“没有这样的文件或目录”错误。
和相关问题(#2),当我在命令行中运行这个命令时——有时它会要求输入 root 密码。如何从 python 脚本传递密码?