Ada*_*gin 4 command-line administration nohup
假设我有一些服务器软件。我启动它,它在 stdin/stdout 上提供了一个接口,我可以用它在运行时输入命令。我希望能够通过 SSH 启动它,退出会话,返回并再次挂接到该 stdin/stdout 接口。
我在想一定有一个像 nohup 或 & 这样的简单命令可以让我这样做。在那儿?
是的,使用可以使用tmux
或,较旧的screen
. 以下是各自man
页面的摘录:
tmux
:
tmux is a terminal multiplexer: it enables a number of terminals to be
created, accessed, and controlled from a single screen. tmux may be
detached from a screen and continue running in the background, then later
reattached.
When tmux is started it creates a new session with a single window and
displays it on screen. A status line at the bottom of the screen shows
information on the current session and is used to enter interactive
commands.
A session is a single collection of pseudo terminals under the management
of tmux. Each session has one or more windows linked to it. A window
occupies the entire screen and may be split into rectangular panes, each
of which is a separate pseudo terminal (the pty(4) manual page documents
the technical details of pseudo terminals). Any number of tmux instances
may connect to the same session, and any number of windows may be present
in the same session. Once all sessions are killed, tmux exits.
Each session is persistent and will survive accidental disconnection
(such as ssh(1) connection timeout) or intentional detaching (with the
'C-b d' key strokes). tmux may be reattached using:
$ tmux attach
Run Code Online (Sandbox Code Playgroud)screen
Screen is a full-screen window manager that multiplexes a physical
terminal between several processes (typically interactive shells).
Each virtual terminal provides the functions of a DEC VT100 terminal
and, in addition, several control functions from the ISO 6429 (ECMA 48,
ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support
for multiple character sets). There is a scrollback history buffer for
each virtual terminal and a copy-and-paste mechanism that allows moving
text regions between windows.
When screen is called, it creates a single window with a shell in it
(or the specified command) and then gets out of your way so that you
can use the program as you normally would. Then, at any time, you can
create new (full-screen) windows with other programs in them (including
more shells), kill existing windows, view a list of windows, turn
output logging on and off, copy-and-paste text between windows, view
the scrollback history, switch between windows in whatever manner you
wish, etc. All windows run their programs completely independent of
each other. Programs continue to run when their window is currently not
visible and even when the whole screen session is detached from the
user's terminal. When a program terminates, screen (per default) kills
the window that contained it. If this window was in the foreground,
the display switches to the previous window; if none are left, screen
exits.
Run Code Online (Sandbox Code Playgroud)这两个程序都可以让您登录到服务器,启动进程,然后注销并保持运行。当您想检查它时,您重新登录到服务器并重新连接到正在运行的tmux
或screen
会话,就好像您从未离开过一样。您可以从 Ubuntu 存储库安装它们:
sudo apt-get install screen
Run Code Online (Sandbox Code Playgroud)
或者
sudo apt-get install tmux
Run Code Online (Sandbox Code Playgroud)
您可以在我们的姊妹网站Unix & Linux上找到比较这两个程序的不错的问答。