非同期で実行すると、プロセスは中断されます。

非同期で実行すると、プロセスは中断されます。

始めたかったのですが、忘れてしまったプロセスがありました。同期的に実行すると、次のようになります。

sudo -E lein run

これは無期限にうまく機能します。非対話型です。ポート80でWebサーバーを起動します。しかし、私が実行したとき:

sudo -E lein run &

ターミナル出力:

[4] 30236

数秒後:

[4] + 30236 suspended (tty input) sudo -E ../bin/lein run

私のプロセスはポート80でWebサーバーを起動する必要がありますが、サーバーは表示されません。

Q:何が起こっているのか、どうやって診断しますか?私はstdoutとstderrが印刷されないと思いますが、間違っている可能性があります。プロセスが一時停止されたのはなぜですか?非同期的に実行できるlein run他の方法はありますか?

ベストアンサー1

このsudoコマンドは、ttyを介してユーザーと会話できることを期待しています。バックグラウンドにプッシュすると、ttyへの排他アクセスが必要ですが、もはや排他アクセスがないため停止します。 (これはセキュリティインターフェイスであり、パスワードが必要な場合があり、ユーザーアカウントへのさまざまなアクセス権でプログラムを実行します。重要なのは、ユーザーに排他的なアクセス権があることです。)

プログラムは、screen「実際の」ttyに必ずしも関連付けられる必要はない仮想ttyを提供する以下で実行できます。

screen -md sudo -E lein run

おすすめ記事