背景と拒否プロセス

背景と拒否プロセス

scpかなり大きな転送(あるリモートサーバーから別のサーバーへ)があります。

その場合は、このコマンドを実行しているコンピュータをシャットダウンしたい場合があります。これで転送が終了しますか?sshBitwiseプログラムを使用してシェルにアクセスできます。

ベストアンサー1

いくつかの解決策があります。

背景と拒否プロセス

  1. リモートサーバーのSSH端末を開きます。
  2. 通常どおり転送を開始しますscp
  3. scpプロセスをバックグラウンドに配置します(Ctrl+ Z、次のコマンドbg
  4. バックグラウンドプロセスを拒否します(disown)。
  5. セッションを終了すると(exit)、プロセスはリモートコンピュータで実行され続けます。

このアプローチの1つの欠点は、stdoutとstderrのファイル記述子がまだsshセッションのttyへの参照を含むことです。そのため、終了しようとすると端末がハングすることがあります。 SSHクライアントを強制終了することでこの問題を解決できます~.(エスケープシーケンスは新しい行に従う必要があります...参照~?)。中断したいプロセスがstdoutまたはstderrに書き込む場合、ttyバッファがオーバーフローするとプロセスが早く終了する可能性があります。

スクリーンセッションの作成と分離

GNU画面セッションからログアウトした後でも、サーバーを切り離して継続的に実行できるリモート端末セッションを作成するために使用できます。その後、後でサーバーに再度ログインしてセッションに再接続できます。

  1. SSH経由でリモートサーバーにログインします。
  2. 画面セッションを開始してくださいscreen -D -R <session_name>
  3. 通常どおり転送を開始しますscp
  4. Ctrl+を使用しAて画面セッションを切り離しますd
  5. SSHセッション終了(exit

セッションに再接続するには:

  1. SSH経由でリモートサーバーにログインします。
  2. スクリーンセッションに再接続し、screen -D -R <session_name>

電話を切らずにコマンドを実行する

以下を使って回答を見るnohup

ジョブスケジューラの使用

自動化したい繰り返し操作の場合、これが最善の解決策です。

使用crontabatまたはbatch移行を準備します。

おすすめ記事