Ubuntuの場合、このコマンドラインは次のとおりです。
sudo netstat -tap | grep mysql
MySQLが実行されている場合、次のようなものが返されます。
tcp 0 0 localhost:mysql *:* LISTEN 6732/mysqld
そうでなければ何もありません。
サブプロセスを使用して、Pythonコード内から、そのnetstatが返すもので「LISTEN」を探してMySQLが起動しているかどうかを確認し、次のようにします。
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にあるとき...私は1ワードの引数(「df」としましょう)を使用します–それは問題なく動作します。引数が1語を超える場合(つまり、「df -h /」、またはここで「sudo netstat -tap | grep mysql」のように)、この「そのようなファイルまたはディレクトリはありません」というエラーが発生します。
また、関連する質問(#2)で、このコマンドをコマンドラインで実行すると、rootパスワードを要求されることがあります。Pythonスクリプトからパスワードを渡すにはどうすればよいですか?