以下を考慮してください Nohup
実行:
Nohup script.sh > script.out &
ターミナルからログオフし、再接続し、プロセスをフォアグラウンドに戻し、キーボードを使用して対話する方法はありますか?
スクリプトを開始し、出力を端末に煩わせることなく実行し、後で起動してスクリプトとやり取りしたい場合は、端末マルチプレクサを調べてください。お使いのシステムに応じて、tmux
またはscreen
をお勧めします。以下のリンクでそれらの使用方法に関する情報を見つけることができます:
tmux:
画面:
編集:tmuxプライマーのリンクを追加
Nohup は、ターミナルからコマンドを切断せず、スクリプトを無視させます SIGHUP
、およびリダイレクトstdout/stderr
からファイルNohup.out
へ。これにより、ログアウト後にコマンドをバックグラウンドで実行し続けることができます。
Nohup
は、実行するコマンドをバックグラウンドで自動的に配置しません。コマンドラインを&
で終了することにより、明示的に行う必要があります。
$ Nohup ./script.sh &
[1] 3390
$ Nohup: ignoring input and appending output to ‘Nohup.out’
jobs
は、現在実行中のジョブとそのステータスを印刷できます。コマンドjobs
が見つからない場合、そのシェルの 子プロセス ではなくなります。
$ jobs
[1]+ Running Nohup ./script.sh &
fg
で実行されている場合でも、Nohup
を使用してbashでバックグラウンドジョブをフォアグラウンドに戻すことができます。ただし、出力リダイレクトは変更されず、ファイルNohup.out
に引き続き送信されます。
$ fg
Nohup ./script.sh
シェル/ターミナルを閉じるかログオフすると、コマンドはそのシェルの子ではなくなります。 init
プロセスに属します。 pstree
で検索すると、プロセス1(init
)が所有していることがわかります。前景が存在しないため、前景に戻すことはできません。
次に、ターミナルマルチプレクサーを使用しますが、スクリーンではなく tmux を使用します。画面は、すべての意図と目的のために、維持されていません。その構成は暗い芸術であり、ネクロノミコンの付録に最初に記録された可能性があります。独自の設定を作成しようとすると、Cthuluを垣間見ることができます。真剣に。人々の 。screenrc files を見てください。確かに、設定ファイルの画面の憎悪を仲介する方法があります。 Byob は、致命的なユーザーと不浄なコードの間のベールとして見事な仕事をします。賢明な色、メニューインターフェイス、そしておそらく最も重要なステータスバーが付属しています。
しかし、私が言ったように、代わりに tmux をお勧めします。まだいくつかのマイナーな設定が必要ですが、それは 十分に文書化されています であり、設定ファイルは意味のないものに見えません。また、色とステータスバーから始めます。 screenrcとtmux.confファイルを比較します。
Linuxコマンドは、最後に「&
」を追加してバックグラウンドに送信できます。
すべてのバックグラウンドジョブを表示するには、jobs
を発行できます
jobs
[1] + suspended Nohup sh zookeeper-server-start.sh ../config/zookeeper.properties
[2] running Nohup sh kafka-server-start.sh ../config/server.properties
[3] - running Nohup Sudo mongod --dbpath=/var/lib/mongodb
ここでは、3つのジョブをバックグラウンドで実行しています:zookeeper、kafka、およびmongoデーモン。 [1]、[2]、および[3]は、これらのタスクのそれぞれのジョブ番号です。
fg %$taskNumber.
を使用して、これらのタスクをフォアグラウンドに移動できます
ライブハットを見ることに興味がある場合、これはあなたに合っているかもしれません:
Nohup script.sh 2>&1 script.out &
# later:
tail -f script.out