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


18

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

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

Ubuntu 9.04を使用しています。

回答:


24

前にnohupコマンドを使用してコマンドを実行できます。「スクリーン」で実行することもできます。これにより、ターミナルを再接続できます。

例えば:

ssh mySever 'nohup bash myscript.sh'

または、sshでnohupコマンドを実行します。切断しても実行し続けるはずです。これは、nohupがSIGHUPの信号(ハングアップ)をインターセプトするためです。

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


カイルにスナイプ...> smile <
エヴァンアンダーソン

エヴァンを狙撃するすべての人に+1。ハッピー10K :)
squillman

1
チュートリアルへのリンクが壊れている:(
イドは蘭

7

私はいつもnohupを使用しています。出力が気になる場合はログファイルにリダイレクトし、そうでない場合は/ dev / nullに送信します。

例:

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

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

disown %1

1
否認のための1 -非常に便利なあなたはnohupを使用して実行することを忘れて
マーク・

5

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

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

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


+1!画面はダのものです!
ハビエル

以前はscreenを使用していましたが、さまざまな理由でtmuxに切り替えました。Google「tmux vs screen」を使用すると、次のようなリンクが表示されます
。superuser.com/ questions / 236158 /

2

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

nohup script >script.out 2>script.err &

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

nohup script >script.out 2>&1 &
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.