(あるリモートサーバーから別のリモートサーバーへの)scp
転送があります。
このコマンドを実行したコンピュータを閉じたいのですが、転送が終了しますか? Bitwiseプログラムを使用してシェルにssh
アクセスできます。
いくつかの解決策があります。
scp
転送を開始します。bg
です。)disown
)を否認します。exit
)、プロセスは引き続きリモートマシンで実行されます。このアプローチの1つの欠点は、stdoutおよびstderrのファイル記述子に、sshセッションのttyへの参照が含まれていることです。このため、終了しようとするとターミナルがハングする場合があります。これを回避するには、~.
と入力して、sshクライアントを強制的に閉じます(エスケープシーケンスは新しい行に続く必要があります...~?
も参照してください)。破棄するプロセスがstdoutまたはstderrへの書き込みを行っている場合、ttyバッファーがいっぱいになると、プロセスが途中で終了する可能性があります。
GNU Screen を使用すると、リモートターミナルセッションを作成できます。これは、セッションからログアウトした後でも、切り離してサーバー上で実行し続けることができます。その後、サーバーに再度ログインして、セッションに再接続できます。
screen -D -R <session_name>
を開始します。scp
転送を開始します。exit
)セッションに再接続するには:
screen -D -R <session_name>
Nohup
を使用して回答を参照してください。
これが自動化したい定期的な種類のタスクである場合、これが最良のソリューションです。
Nohup(1)
を使用できます。つまり、次のようにします。
Nohup scp alice@source:/the/answer/of/all [email protected]:/var/tmp/42 &
これにより、Nohup.out
の出力が作成されます。その後、安全にログアウトできます。
はい、終了します。接続なしで端末セッションを維持するためのソリューションは、screen
プログラムです。
SCREEN(1) SCREEN(1)
NAME
screen - screen manager with VT100/ANSI terminal emulation
SYNOPSIS
screen [ -options ] [ cmd [ args ] ]
screen -r [[pid.]tty[.Host]]
screen -r sessionowner/[[pid.]tty[.Host]]
DESCRIPTION
Screen is a full-screen window manager that multiplexes a physical ter‐
minal between several processes (typically interactive shells). Each
virtual terminal provides the functions of a DEC VT100 terminal and, in
addition, several control functions from the ISO 6429 (ECMA 48, ANSI
X3.64) and ISO 2022 standards (e.g. insert/delete line and support for
multiple character sets). There is a scrollback history buffer for
each virtual terminal and a copy-and-paste mechanism that allows moving
text regions between windows.
上記のように、たとえばscreenコマンドを使用できます。
user@server:~$ screen -S bigscptransfer
ser@server:~$ scp bigfile.dat server2:.
[detached from 5899.bigscptransfer]
user@server:~$ screen -r bigscptransfer