背景和否认过程

背景和否认过程

我有scp传输(从一台远程服务器到另一台),这是相当大的。

那么也许我想关闭执行此命令的计算机,这会结束传输吗?我可以ssh使用 Bitwise 程序访问 shell。

答案1

有多种解决方案。

背景和否认过程

  1. 打开远程服务器的 ssh 终端。
  2. 像往常一样开始scp传输。
  3. 将 scp 进程置于后台(Ctrl+ Z,然后是命令bg。)
  4. 否认后台进程 ( disown)。
  5. 终止会话 ( exit),进程将继续在远程计算机上运行。

这种方法的一个缺点是 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

使用任务计划程序

如果这是您想要自动化的周期性任务,那么这是最佳解决方案。

使用crontab,at, 或者batch安排转移。

答案2

你可以使用nohup(1),即,执行以下操作:

nohup scp alice@source:/the/answer/of/all [email protected]:/var/tmp/42 &

这将创建 的输出nohup.out。然后您就可以安全注销了。

答案3

是的,它将被终止。在没有连接的情况下保持终端会话活动的解决方案是以下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.

答案4

nohup scp shinto@source:/home/data[电子邮件受保护]:/var/tmp/文件

暂时停止命令

CTRL+z

将命令置于后台,输入:

背景

您可以通过以下方式检查该过程:

工作

相关内容