web-dev-qa-db-ja.com

接続を閉じても終了しないSSH経由でスクリプトを実行する方法

スクリプトを実行する必要があります。実行に時間がかかります。または、永久に実行したいだけです。切断すると実行が停止するため、マシンにSSHで接続することはできません。

スクリプトを起動したシェルに依存しないスクリプトを実行する方法はありますか?

私はUbuntu 9.04を使用しています。

20
Jakub Arnold

このコマンドは、その前にNohupコマンドを付けて実行できます。端末を再接続できる「画面」で実行することもできます。

例えば:

ssh mySever 'Nohup bash myscript.sh'

または、sshを実行してNohupコマンドを実行します。切断しても実行を続ける必要があります。これは、NohupがSIGHUP信号(インターセプト)をインターセプトするためです。

画面は少し複雑ですが、20分間は基本を学ぶのに時間がかかる場合がありますが、画面は最も便利なツールの1つです。 これはチュートリアルです

25
Kyle Brandt

私はいつもノーフだけを使います。出力に関心がある場合は、ログファイルにリダイレクトします。それ以外の場合は、/ dev/nullに送信します。

例:

Nohup scp file.tar.gz root@someserver:/var/tmp > /dev/null 2>&1 &

これにより、出力は/ dev/nullに送られ、ログアウトしてもHUPシグナルの影響を受けなくなります。セッションに接続されないように、特定のシェル(bashなど)でジョブを「否認」することもできます。

disown %1
8
m0j0

画面をインストールするには:apt-get install screen

次に、単にscreenを使用して起動します

そしてman screenキーバインディングを取得します。

7
Disco

サーバーにログインしている間、次のコマンドを使用して、分離モードでスクリプトを実行できます。

Nohup script >script.out 2>script.err &

後で再度ログインすると、script.outで出力を確認し、script.errでエラーメッセージを確認できます。同じファイルに出力メッセージとエラーメッセージが必要な場合は、次のようにします。

Nohup script >script.out 2>&1 &
2
Michael Dillon