nohup进程在python脚本中使用时不会在后台继续运行

2024-05-16 12:53:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在后台运行远程服务器上的mysql查询。在

nohup mysql -h10.0.100.1 -P3306 -utest -ppassword -Dcms -e "select * from table1 ;" & echo $!

当从命令行手动执行上述命令时,我看到进程正在后台运行(表中有记录,这些记录将在2分钟内返回响应)

[root@TEST_Server]# ps -ef | grep mysql
root 11144 9227 19 17:44 pts/0 00:00:01 mysql -h 10.0.100.1 -P 3306 -utest -px xxxxxxx -Dcms -e select * from table1 ;

然而,当我在python脚本中使用这段代码时,我看不到任何进程在后台运行。它没有执行预期的mysql命令 Python代码段:

 cmd = "nohup mysql -h10.0.100.1 -P3306 -uroot -ppassword -Dcms \
            -e \"select * from table1 ;\" & echo $!"  
 out, err, code = ssh_client.execute_sudo_command(["%s" % cmd])  
 print out

它返回PID,但是我看不到进程在它打算运行的一段时间内并没有真正在后台运行。在

我试过https://github.com/brooklyncentral/brooklyn/issues/162或{a2}中提到的解决方案

ssh localhost 'nohup mysqld > out 2> err < /dev/null & echo $! > pid.txt ; exit 0'

但没成功。在

我使用python2.7.6和SSHClient进行远程连接。 有什么克服这个问题的建议吗?在


Tags: from命令echo远程进程mysqloutselect