2

タスクは、python スクリプトから bash スクリプトを実行し、python スクリプトが終了してもバックグラウンドで実行できるようにすることです。UNIX ソリューションが必要ですが、Win で動作しないかどうかは気にしません。

Python スクリプト:

#!/usr/bin/env python
import os, commands
command = '/usr/bin/ssh localhost "/home/gd/test/python/back.sh  "   '
print os.spawnlp(os.P_NOWAIT,command)
print "Python done"

/home/gd/test/python/back.sh :

#!/usr/bin/bash

/bin/echo "started"
/bin/sleep 80
/bin/echo "ended"

問題は、python スクリプトが開始されると、生成されたプロセスの PID が出力されることです。しかし、バックグラウンドでのプロセスはありません。P_WAIT を使用すると、コマンドがパスに見つからないことを意味する終了コード 127 が表示されます。しかし、私はすでに可能なすべてのパスをすでに提供していますか? これらのスクリプトは、commands.getoutput と完全に連携します。

4

1 に答える 1

5

このようなものが動作するはずです

#!/usr/bin/env python
import os
command = ['/usr/bin/ssh', 'ssh', 'localhost', '/home/gd/test/python/back.sh']
print os.spawnlp(os.P_NOWAIT, *command)
print "Python done"

ここでは、spawn の代わりにsubprocessモジュールを使用することをお勧めします。

#!/usr/bin/env python
from subprocess import Popen
command = ['/usr/bin/ssh', 'localhost', '/home/gd/test/python/back.sh']
print Popen(command)
print "Python done"
于 2012-10-06T12:52:15.340 に答える