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