screen命令
远程连接linux的时候通常会遇到下面的问题:
- 频繁在2个工作目录切换,只能开两个远程连接的窗口
- 想运行一个长期在后台执行的程序,只能用nohup命令
用screen命令可以同时解决上面两个问题。
想象一下,如果你用的是windows系统,你的电脑同时连接了多个显示器,每个显示器上可以打开多个窗口,每个窗口对应一个应用程序。
在screen命令里,screen就相当于一个显示器,window就相当于一个窗口,每个window默认打开就是一个bash命令行,你可以在里面运行一个程序:
概念弄清了,下面说一下怎么用:
screen -S name //创建一个叫做name的screen
screen -ls //列出所有的screen
screen -r name //切换到叫做name的screen
screen -d name //远程detach某个screen
在screen下操作的时候,所有命令以ctrl+a(C-a)开始
C-a c -> Create,开启新的 window
C-a w -> Windows,列出已开启的 windows 有那些
C-a n -> Next,切换到下个 window
C-a p -> Previous,前一个 window
C-a 0..9 -> 切换到第 0..9 个window
Ctrl+a [Space] -> 由視窗0循序換到視窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里 每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令則可回去。
C-a t -> Time,显示当前时间,和系统的 load
C-a K -> kill window,强行关闭当前的 window