Linux运维基础之screen命令详解

Linux运维基础之screen命令详解

screen 命令是一个终端多路复用器,这意味着它允许你在一个窗口中运行多个终端会话。你是否需要管理长期运行的任务,或在注销后仍保持会话的活力?这就是 screen 发挥作用的地方。

screen 的妙处在于它能分离和重新连接会话,这对远程工作、长时间运行的脚本或任何需要在多个终端窗口间跳转的任务都非常有用。常用的相关命令包括: screen -r,用于重新连接会话; screen -ls,用于列出活动会话;Ctrl + A,然后 D,用于在不终止会话的情况下分离会话。

因此,无论你是要处理各种任务的系统管理员,还是运行多个进程的开发人员,screen 都是你需要添加到 Linux 工具包中的命令。请继续阅读,了解如何充分发挥它的潜力。

screen 命令的一般语法:

screen [OPTIONS] [SESSION NAME]

1. 用指定名称创建会话

screen -S [file]

-S 选项会在屏幕中创建一个新窗口,并为其命名。

示例:

user@hostname:~$ screen -S my_session

运行此命令后,你将进入名为 my_session 的新屏幕会话。在终端中无法直接看到会话名称,但可以通过退出当前会话(按 Ctrl + A,然后按 D),然后运行 screen -ls,列出所有活动会话。

分离后 screen -ls 的输出示例:

user@hostname:~$ screen -ls
There is a screen on:
12345.my_session     (Detached)
1 Socket in /var/run/screen/S-user.

在这个例子中,12345 是屏幕会话的进程 ID,my_session 是你给会话起的名字。

要重新连接到这个会话,可以使用

screen -r 12345

或者,如果您为您的会议命名:

screen -r my_session

这将使您回到退出的屏幕会话。

2. 列出所有屏幕进程

screen -ls

该选项可显示当前打开的所有窗口,包括后台运行的窗口。

示例:

输出结果通常是这样的:

There are screens on:
12345.pts-0.hostname  (Detached)
67890.pts-1.hostname  (Attached)
2 Sockets in /var/run/screen/S-username.

下面是输出结果的细目:

  • 12345.pts-0.hostname 和 67890.pts-1.hostname 是屏幕会话的标识符。
  • 12345 和 67890 是屏幕会话的进程 ID(PID)。
  • pts-0 和 pts-1 表示终端类型。
  • hostname 是运行屏幕会话的主机名称。
  • (Detached) 或 (Attached) 表示屏幕会话的状态。
  • Detached 表示会话在后台运行,当前未连接到任何终端。
  • Attached 表示会话当前正在终端窗口中查看。
  • 2 Sockets in /var/run/screen/S-username 表示屏幕会话的数量和存储会话套接字的目录。username 是拥有会话的用户名。

3. 重新连接终端的会话

screen -r [filename]

使用此选项可重新连接过去已分离的屏幕会话。

示例:

比方说,你有一个长期运行的进程,比如下载一个大文件,你想在注销后仍让它继续运行。你可以使用 screen 创建一个新会话,并在其中运行进程。

创建一个新的 screen 会话:

screen -S my_download_session

这将创建一个名为 my_download_session 的新屏幕会话。

运行长期运行的进程:

wget http://example.com/large-file.zip

退出屏幕会话:

按下 Ctrl + A,然后按 D 从会话中退出。会话将继续在后台运行。

注销或关闭终端:

此时,您可以安全地注销或关闭终端。下载将在后台继续进行。

重新连接到屏幕会话:

稍后,当你想检查进度或重新加入会话时,可以使用 screen -r 命令。

screen -r my_download_session

这将使你重新连接到名为 my_download_session 的屏幕会话,然后你就可以看到下载或任何其他长期运行进程的进度。

如果你有多个分离的会话,但不确定会话的名称,可以用以下方法列出它们:

screen -ls

这将显示所有已分离和已连接的屏幕会话列表,你可以选择要重新连接的会话。

4. 退出会话

screen -d [file]

-d 选项用于退出屏幕会话,以便稍后重新连接。

示例:

下面是一个分步示例,演示如何使用  screen -d [filename]

Step 1:创建带名称的新屏幕会话

首先,创建一个新的屏幕会话并为其命名,例如 ” my_session “:

screen -S my_session

Step 2:在屏幕会话中运行一些命令

创建会话后,您将进入会话。你可以运行一些命令,比如:

ls
echo "Hello, World!"

Step 3:手动退出屏幕会话

你可以按下 Ctrl + A,然后按下 D,手动退出屏幕会话。这将使你回到原来的终端,但 ” my_session ” 会话仍在后台运行。

Step 4:重新连接到屏幕会话

你可以使用以下方法重新连接到会话:

screen -r my_session

Step 5:使用 -d 退出屏幕会话

现在,假设你在另一个终端中,想退出会话 ” my_session” 而不重新连接到它。你可以像这样使用 -d 选项:

screen -d my_session

如果会话 ” my_session” 当前连接到任何终端,这将使其退出,但不会终止。之后可以使用 screen -r my_session 重新连接。

5. 共享屏幕会话

screen -X [sharing_session]

此选项允许两个人从不同地点登录同一账户。

示例:

下面是一个简单的示例,演示如何使用 screen -X 向正在运行的 screen 会话发送命令:

Step 1:创建新的屏幕会话

首先,打开终端,创建名为 ” my_session ” 的新屏幕会话:

screen -S my_session

Step 2:退出屏幕会话

按 Ctrl + A,然后按 D,即可从屏幕会话中退出。

Step 3:从另一个终端向屏幕会话发送命令

打开另一个终端窗口,使用 screen -X 命令向 ” my_session” 屏幕发送命令。例如,发送 quit 命令来终止会话:

screen -S my_session -X quit
This will terminate the "my_session" screen session.

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作 rmdir · cd · pwd · exa · ls
文件操作 cat · cp · dd · less · touch · ln · rename · more · head
文件系统操作 chown · mkfs · locate
网络 ping · curl · wget · iptables · mtr
搜索和文本处理 find · grep · sed · whatis · ripgrep · fd · tldr
系统信息和管理 env · history · top · who · htop · glances · lsof
用户和会话管理 screen · su · sudo · open

此外,我们还整理 Linux 命令行大全,以帮助大家全面深入地学习 Linux。

评论留言