web-dev-qa-db-ja.com

ログインしていない間、bashスクリプトをリモート端末で実行したままにしますか?

実行に数時間かかるbashスクリプトがあります。実行中に、他のことをしたいと思います。これには、ログアウトまたはインターネットからの切断が含まれる場合があります(私のスクリプトはさまざまなコンピューターでネットワークテストを実行します)。

リモート端末からテストを実行し、実行中に端末からログアウトできるコマンドがあることを理解しています。このコマンドが何であるか誰か知っていますか?

14
Ritwik Bose

探しているコマンドはNohupです。

screenもあります。これは、何かを実行したままにしておきたいが、後で戻ってインタラクティブに再接続する場合に使用します。

Nohupは、コマンドが起動後にユーザー入力を期待しない場合はより単純であり、プログラムをインタラクティブに実行できるようにする場合はscreenがより優れています。

17
Justin Smith

これにはNohupを使用します。私の場合、action.pyという名前のpythonスクリプトがありました。Nohup python action.py &を使用してリモートサーバーでスクリプトを実行し、ターミナルを閉じました。後で実行が終了したら、プロセスからのすべての出力は、Nohup.outと同じディレクトリに作成されるaction.pyに表示されます。ファイルがすでに存在する場合は、さらに出力が追加されます。

唯一の問題は、スクリプトがいつコースを実行したかを知らないことです。そのため、私の場合は、完了時にメールを送信してもらいました。これが誰かを助けたことを願っています!

1
Bryan J

コマンドの先頭にNohupコマンドを追加するのを忘れた場合はどうなりますか?

次のロングコマンドを実行したとしましょう。

The beginning of the Output of a Long Command

これはls -Ral /と呼ばれ、ルートフォルダから再帰的に開始して、すべてのファイルと、非表示のものを含むすべてのフォルダを長い形式で一覧表示することになっています。しばらく時間がかかる場合があります。

押すだけ ctrl+Z

Stopping the Long Command

どうやってそれを取り戻すのですか?

フォアグラウンドに戻すためのコマンドはfgです。

Bringing the Command back

0
user1018743