What is GNU Screen?
What is GNU Screen?
GNU Screen是什么?很棒!
稍微有点用的回答:它允许您在一个终端中运行多个控制台应用程序或命令。有点像带有选项卡的终端仿真器。事实上,这正是它所具备的(只不过没有使用常规 GUI 工具包)。
为什么它如此伟大?简单,您可以在屏幕会话中运行程序(运行 screen
会运行您的默认 shell,运行 screen myapp
会在会话中运行 myapp),然后按下 ctrl+a(屏幕控制序列),再按下 d(ctrl+a,d)进行分离。
该程序在后台运行,但是,与执行 mycmd &
不同的是,您可以运行 screen -r
重新连接会话,并且一切都与您离开时相同。如果它是一个 Curses UI,则可以发送输入到该命令,一切仍然像“真实”终端一样工作。
它在控制台 IRC 客户端中非常受欢迎 - 您可以运行(例如)screen irssi
,并从任何您可以通过 SSH 连接的地方重新连接会话。
以下是一些有用的命令:
我偶然发现的其他一些有用的东西:
-U
标志以支持Unicode(例如,screen -xU
)-x
标志允许您多次重新连接同一会话。(-r
断开现有连接)[ 主机名 ][ 0-$ bash (1*$ irssi) ][16/09 9:32]
(运行在主机名上,它有两个窗口。这是由我的.screenrc中的hardstatus行设置的(答案末尾)startup_message off
vbell off
hardstatus alwayslastline
hardstatus string '%{gk}[ %{G}%H %{g}][%= %{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%?%?%= %{g}]%{=y C}[%d/%m %c]%{W}'
mycmd &
不同,实际上你可以使用 fg
命令将一个进程从后台调回前台,同时也可以使用 ctrl+z
命令将其放回后台。 - naught101screen
通过将进程运行的部分与用户交互发生的部分分离来避免这种情况。 - Piskvor left the building