問題
アリは閉じられたパテ接続は、常に爬虫類はバックグラウンドで実行されているので、他の手段によって達成するために、パテは爬虫類を聞かせて接続することはできません閉じられていた爬虫類のプロセスを実行した後に見つけたとき、scrapyの爬虫類を実行するとなると
ソリューション
- scrapyコードを実行しているPythonのプログラムrun.pyを書きます
import os if __name__ == '__main__': os.system("scrapy crawl yourspidername")
- nohupは、コマンド
nohup python -u run.py > job.log 2>1& &
そのような元のコンテンツフォーマットされた出力でjob.logに出力されます。
知識ポイント
1. os.system(コマンド)コマンド(列)コマンドサブシェルを実行します。戻り値の窓では、戻り値はUNIXで0プロセスの終了ステータスを示して常にあります。
サブシェル内でコマンド(文字列)を実行します。これは、標準C関数を呼び出すことで実現され system()
、そして同じ制限があります。変更 sys.stdin
などは、実行されるコマンドの環境には反映されません。場合は 、コマンドが 任意の出力を生成し、それはインタプリタ標準出力ストリームに送信されます。
Unixでは、戻り値はのために指定された形式で符号化されたプロセスの終了状態です wait()
。POSIXは、Cの戻り値の意味は指定していないことに注意してください system()
Python関数の戻り値はシステムに依存するので、機能を。
Windowsでは、戻り値は、実行した後にシステムシェルから返されたということである コマンドを。シェルは、Windowsの環境変数で与えられる COMSPEC
:それは通常、 cmd.exeのコマンド実行の終了ステータスを返します; 非ネイティブシェルを使用しているシステム上で、あなたのシェルのマニュアルを参照してください。
subprocess
モジュールは、新しいプロセスを生成し、その結果を取得するためのより強力な機能を提供します。そのモジュールを使用してこの機能を使用することが好ましいです。参照 サブプロセスモジュールに置き換えてください古い関数を セクション subprocess
いくつかの有用なレシピのドキュメント。
可用性環境:Unix、Windowsの
コマンドを実行するためにハングアップしない2.nohup
上記の例では、0 - STDIN(標準入力)、1 - STDOUT(標準出力)、2 - stderrの(標準誤差)。
2>&1標準誤差(2)は、標準出力(&1)、標準出力(&1)にリダイレクトされ、次にリダイレクトjob.logファイルに入力されます。
参考:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
https://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html