私はこのメッセージを「失った」ようです。何が問題なの?

私はこのメッセージを「失った」ようです。何が問題なの?

SSHを介してUbuntu 12.04クラウドサーバーに接続し、次のようにWebサーバーを起動しました(bashを使用)。

$ nohup python tserver.py &
[2] 2122
$ nohup: ignoring input and appending output to `nohup.out'

コマンドを実行するとプロンプトが消えます。空行が1つだけです。 「Enter」を押してプロンプトを復元できます。つまり、Enterを押した後に$が再び表示されます。しかし、これらのコマンドのいくつかをスクリプトで作成したい(複数のWebサーバーインスタンスを開く)。だから、「入力コマンドの送信」などのスクリプトを書くのは好きではありません。ここで何が起こっているのでしょうか?ヒントが欠けているのはなぜですか?これらの一連のコマンドをどのようにスクリプトで記述できますか?

ベストアンサー1

アプリケーションをバックグラウンドに置き、アプリケーションが出力を生成しています。あなたのメッセージはまだ存在し、追加のコンテンツが表示されるだけです。

たとえば、

$ ( sleep 1 && echo hello ) &
[1] 24764
$ █

その後、1秒遅れて次のようになります。

$ ( sleep 1 && echo hello ) &
[1] 24764
$ hello

出力は単にecho端末に書き込まれ、現在カーソルがある場所に表示されます。シェルは出力が表示されたことを知らない。出力が存在しないかのように入力を続けることができます(読み取りだけが難しくなります)。

しかし、きれいな解決策は出力をリダイレクトすることです。

nohup python tserver.py >/dev/null 2>&1 &

おすすめ記事