scp
かなり大きな転送(あるリモートサーバーから別のサーバーへ)があります。
その場合は、このコマンドを実行しているコンピュータをシャットダウンしたい場合があります。これで転送が終了しますか?ssh
Bitwiseプログラムを使用してシェルにアクセスできます。
ベストアンサー1
いくつかの解決策があります。
背景と拒否プロセス
- リモートサーバーのSSH端末を開きます。
- 通常どおり転送を開始します
scp
。 - scpプロセスをバックグラウンドに配置します(Ctrl+ Z、次のコマンド
bg
) - バックグラウンドプロセスを拒否します(
disown
)。 - セッションを終了すると(
exit
)、プロセスはリモートコンピュータで実行され続けます。
このアプローチの1つの欠点は、stdoutとstderrのファイル記述子がまだsshセッションのttyへの参照を含むことです。そのため、終了しようとすると端末がハングすることがあります。 SSHクライアントを強制終了することでこの問題を解決できます~.
(エスケープシーケンスは新しい行に従う必要があります...参照~?
)。中断したいプロセスがstdoutまたはstderrに書き込む場合、ttyバッファがオーバーフローするとプロセスが早く終了する可能性があります。
スクリーンセッションの作成と分離
GNU画面セッションからログアウトした後でも、サーバーを切り離して継続的に実行できるリモート端末セッションを作成するために使用できます。その後、後でサーバーに再度ログインしてセッションに再接続できます。
- SSH経由でリモートサーバーにログインします。
- 画面セッションを開始してください
screen -D -R <session_name>
。 - 通常どおり転送を開始します
scp
。 - Ctrl+を使用しAて画面セッションを切り離しますd。
- SSHセッション終了(
exit
)
セッションに再接続するには:
- SSH経由でリモートサーバーにログインします。
- スクリーンセッションに再接続し、
screen -D -R <session_name>
電話を切らずにコマンドを実行する
以下を使って回答を見るnohup
。
ジョブスケジューラの使用
自動化したい繰り返し操作の場合、これが最善の解決策です。