例子:当想要下载一个大文件的时候,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
–