例子:当想要下载一个大文件的时候,ssh 连接到服务器之后 用 wget 命令开始下载一个文件,这时 网络不稳定 突然掉线了,那么 文件下载过程也就中断了。再次 ssh 连接到服务器,用 wget 命令重新下载那个文件:之前的下载过程等于白费 (如果再次掉线 那么又付之东流)。
办法:ssh 连接到服务器之后,先创建一个 screen 的 session ,然后进入到 screen 的一个 session ,然后 用 wget 命令 下载一个文件。这时,如果退出此 session (比如 网络掉线) 了,那么 wget 会依旧跑在此 session 里。再次 ssh 连接到服务器的时候,查看 screen 的 session 列表,会发现刚才启动的 session 还在。进入它之后,发现 wget 下载过程还在继续:并未因为你的网络掉线而中断。

原理:wget 成为了 screen session 的子进程。

类似软件:tmux (为什么不用 tmux ?命令太难记了!)

配置办法:
1.安装 screen

sudo apt-get install screen

2.配置 screen
nano ~/.screenrc 写入

startup_message off
autodetach on
nonblock on
vbell off
vbell_msg "Bell on %t (%n)"
shell -$SHELL
caption always "%{= KW}screen -d%{= WK} Detach   %{= KW}ctrl+a+d%{= WK} Detach   %{= KW}screen -r a%{= WK} Resume   %{= KW}exit%{= WK} Destroy   %{= KW}screen -ls%{= WK} List"

重启

pkill screen
screen -ls

图片描述

3
例子:进入并启动 wget

测试大文件 下载

ssh -p 22 abc@117.71.214.157
screen -ls
screen -S a
screen -d
screen -ls
screen -r a
cd ~/Downloads
ls
wget http://releases.ubuntu.com/16.04/ubuntu-16.04.6-desktop-amd64.iso

4
常用命令

screen -ls ## 查看 sesson 列表
screen -S a ## 开启一个 名为 ‘a’ 的 session
screen -r a ## 进入一个 session ( resume a session )
screen -d   OR ctrl+a+d  ## 离开一个 session ( detach a session )
exit ## 进入一个 session 之后 销毁本 session 

-


changsj
211 声望11 粉丝

changsj.