ssh后台运行程序
设想这样一种情况:
你使用ssh
客户端(如putty
或xshell
),正在使用Linux
服务器跑一个程序或下载一个东西,突然你网线被人动了一下或网络环境发生了不稳定现象,甚至电脑突然没电了,辣么,你正在运行的程序就不得不从头再来。
screen
的出现很好地解决了这一痛点
安装screen
Jeaten:~$ apt-get install screen
—— 此安装以Ubuntu
系统为例
screen
的使用
- 直接输入
screen
即可创建screen
终端
Jeaten:~$ screen
- 显示现有的
screen
作业 –screen -ls
Jeaten:~$ screen -ls
There are screens on:
29371.pts-1.X10DAx-1 (2021年08月01日 20时08分45秒) (Attached)
29295.pts-1.X10DAx-1 (2021年08月01日 20时07分36秒) (Detached)
2 Sockets in /run/screen/S-Jeaten.
-
离开现有的
screen
在screen
终端先按Ctrl +a
,再按Ctrl+d
-
重新连接现有的
screen
Jeaten:~$ screen -r screen_id
—— screen_id
为screen id号或进程号
- 退出(直接结束)现有的
screen
,方法有二:
Jeaten:~$ screen -ls
There are screens on:
29450.pts-1.X10DAx-1 (2021年08月01日 20时13分31秒) (Attached)
29371.pts-1.X10DAx-1 (2021年08月01日 20时08分45秒) (Detached)
2 Sockets in /run/screen/S-Jeaten.
- 直接
kill pid(进程号)
Jeaten:~$ kill 29450
[screen is terminating]
Jeaten:~$ screen -ls
There is a screen on:
29371.pts-1.X10DAx-1 (2021年08月01日 20时08分45秒) (Detached)
1 Socket in /run/screen/S-Jeaten.
- 使用
screen -S screen_id -X quit
Jeaten:~$ screen -ls
There is a screen on:
29371.pts-1.X10DAx-1 (2021年08月01日 20时08分45秒) (Detached)
1 Socket in /run/screen/S-lijitong.
Jeaten:~$ screen -S 29371 -X quit
Jeaten:~$ screen -ls
No Sockets found in /run/screen/S-Jeaten.
Jeaten:~$
- 有时候仅凭screen id无法区分具体的screen,我们可以为其命名
使用命令screen -S 名字
即可
Jeaten:~$ screen -S test
Jeaten:~$ screen -ls
There is a screen on:
23800.test (2021年08月02日 10时09分44秒) (Attached)
1 Socket in /run/screen/S-Jeaten.
Jeaten:~$