2017-03-06 3 views
0

mybash.shは、(理論的に)永遠に実行されるはずのPythonプログラムを呼び出します。これは、非同期時間制限が無限であることを意味します。しかし、以下のような行を使用すると、制限時間後に停止します。この場合、です。 async: 45を削除すると、Pythonプログラムが継続的に実行されるため、実行が不可能になることはありません。可能性がありますbashファイルを忘れて、ターミナルを忘れ返す

- name: fire and forget 
    command: sh mybash.sh 
    async: 45 
    poll: 0 

どのように私は(mybash.shによって呼び出さすなわち、このPythonプログラムは永遠に実行されると、端末内ansibleの実行を待つべきではありません)、端末内ansibleのansible、火災忘れて返すように実行を作るのですか?

+0

これは実際には悪い習慣です。代わりに、サービスを設定するのに頼らなければなりません。 –

+0

また、 'sh'はbashではありません。 'sh'で起動すると、これはPOSIXのshスクリプトであり、bashスクリプトではありません。 –

+0

...プログラムを起動してバックグラウンドで実行するプロセスからプログラムを切り離したい場合、実行したい動詞は "daemonize"自体であり、多くの検索が行われますその結果、自己デーモン化プログラム/スクリプトは悪い習慣です。オペレーティングシステムが提供するプロセス監視システムを使用する方が良いでしょう(ブート時に起動するように設定する、失敗後に再起動を管理するなど)。 –

答えて

0

それはあなたがサービスを設定するのではなく、何をしたいのか本当にだ場合、あなたのような何かができる:

- name: fire and forget 
    shell: nohup mybash.sh & 

あなたがそれを使用するつもりだので、あなたはmanpage to nohupで見たいと思うかもしれません。

+1

少なくともどこかで 'nohup.out'を残さないように、stdout/stderrを明示的にリダイレクトすることを強く推奨します。 (個人的には、nohupを不要な愚かさと見なす傾向があります。ネイティブbashから 'exec '/ dev/null 2>&1'を実行し、' trap'コマンドでクリアすることはできません'HUP'のデフォルトの動作 - しかし... * shrug *) –

+0

@CharlesDuffyまさに、' disown'がなぜあまり使われていないのだろうと思っています... – heemayl

+0

'nohup'は、 – chicks

関連する問題