在电脑上远程登录服务器执行程序时,如果关闭远程登录窗口则服务器上运行的程序也会中止,解决办法:使用screen进行远程程序管理。
1 安装screen: 大多数linux自带screen,如果没有,可以使用下述命令进行安装
sudo apt-get install screen(大多数linux) 或 sudo yum install screen (大多数linux) 或 sudo pacman -S screen(archlinux系统)
2 进入screen运行程序:输入screen,在打开的screen会话窗口里输入执行程序的语句。也可以 screen -S <命令语句> 将两步合为一步,如下:
screen -S python test.py
3 暂时离开screen会话窗口:先按ctrl+a然后按d即可。此时服务器后台仍执行程序,即使远程断开也不影响。
4 想再次回到该screen会话窗口时输入 screen -r 。当有多个screen会话窗口时输入screen -r 会列出全部screen会话信息。
[sun@archlinux]$ screen -r
There are several suitable screens on:
6119.pts-0.archlinux (Detached)
4541.pts-0.archlinux (Detached)
18978.pts-0.archlinux (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
5 若有多个screen会话窗口,想进入其中一个时输入 screen -r <pid>,如下:
screen -r 4541
6 杀死一个screen窗口:进入该screen窗口中,先按ctrl+a然后按k即可,注意会出现kill确认,输入y确认kill。
7 创建另一个screen会话:若当前已经在screen窗口中,先按ctrl+a然后按c即可。若已经退出screen,则输入screen会进入一个新的会话窗口
8 查看全部screen会话:输入screen -ls
[sun@archlinux]$ screen -ls
There are screens on:
4541.pts-0.archlinux (Detached)
18978.pts-0.archlinux (Attached)
注:ctrl+a 是几乎所有screen窗口下的命令的开端
screen超级详细的说明见斯坦福文档:http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html