如果我通过终端 SSH 进入服务器并启动一个进程来复制文件,注销后它会被终止吗?

如果我通过终端 SSH 进入服务器并启动一个进程来复制文件,注销后它会被终止吗?

如果是这样,它可以以某种方式存活吗?

(这不是一个重复的问题,因为我不知道注销会终止一个进程。也许其他人也不知道,所以问了错误的问题。

我建议答案中包含指向其他问题

答案1

是的,进程将收到“挂断”信号 ( SIGHUP),该信号通常不会被捕获,并导致进程终止。读取它指向的页面 man -a signalman

nohup命令旨在克服这一困难,无需screen或的开销tmuxnohup最早发明于“挂断”指调制解调器时)。您可以指定一个日志文件,或者让nohup保存STDOUTSTDERR./nohup.out(如果可能),或者$HOME/nohup.out如果不行。

nohup command >$HOME/command.log &

答案2

是的,如果您注销,您已启动的命令将会停止。但您可以使用以下screen命令启动它们:

$ screen command

您可以从这个虚拟屏幕退出(Ctrl+A, D),同时让命令继续运行。

您可以启动命令并立即将其发送到虚拟分离屏幕:

$ screen -fa -d -m command

要获取屏幕会话的概览,请使用以下命令:

$ screen -list
There are screens on:
    2457.pts-2.myserver (22.10.2018 20:04:35)   (Detached)
    12596.pts-3.myserver    (28.08.2018 22:10:00)   (Detached)
    4632..myserver  (15.07.2018 20:56:55)   (Detached)
3 Sockets in /run/screen/S-me.
$ 

使用开关将会话带回到前台-r,同时提供会话 ID:

$ screen -r 2457.pts-2.myserver

相关内容