Zellij 会话生命周期:创建、分离与恢复

会话(Session)是 Zellij 最核心的概念之一。一个会话包含了一组标签页和面板的完整布局,以及其中运行的所有进程。通过会话的创建、分离和恢复,你可以随时断开终端连接而不丢失工作状态,稍后重新连接继续工作。本文将全面介绍会话生命周期的管理方法。

一、创建会话

Zellij 提供了多种方式来创建会话,满足不同的使用场景:

直接启动

最简单的方式,直接在终端中运行:

zellij

Zellij 会自动为会话分配一个名称(通常是一个随机的形容词+名词组合,如 bold-moon-42),并创建一个包含单个面板的空白会话。

指定名称

为会话指定一个有意义的名称,方便后续管理和恢复:

zellij -s my-project

这会创建一个名为 my-project 的会话。推荐为不同项目使用不同的会话名称,例如 frontendbackenddevops 等。

使用布局启动

Zellij 支持通过布局文件(KDL 格式)来定义会话的初始面板和标签页结构。使用预定义的布局名称启动:

zellij -l dev-layout

或者指定自定义布局文件的完整路径:

zellij --layout /path/to/layout.kdl

布局文件可以预定义面板的分割方式、每个面板中运行的命令、工作目录等。这在团队协作中特别有用,可以让所有成员使用一致的开发环境布局。

二、分离会话

分离会话是指断开与当前 Zellij 会话的连接,但让会话中的所有进程继续在后台运行。有两种方式可以分离:

快捷键方式

在 Zellij 内部,按以下快捷键组合分离当前会话:

Ctrl+s → d

即先按 Ctrl+s 进入 Session 模式,再按 d 执行分离操作。

命令行方式

在另一个终端窗口中,可以分离指定的会话:

zellij detach

如果有多个会话运行中,可以指定会话名称:

zellij detach my-project

分离后,Zellij 会退出到普通终端,但会话中的所有面板、标签页和运行中的进程都会保留。你甚至可以关闭终端窗口,会话依然在后台运行。

三、恢复会话

当你需要继续之前的工作时,可以恢复(attach)已分离的会话。

列出所有会话

首先查看当前有哪些会话在运行:

zellij ls

或者使用完整命令:

zellij list-sessions

输出会列出所有活跃会话的名称,以及每个会话中标签页的数量等信息。

恢复指定会话

通过会话名称恢复连接:

zellij attach my-project

attach 可以简写为 a

zellij a my-project

如果不确定会话是否存在,可以使用 -c 选项。当会话存在时恢复它,不存在时则创建一个新的:

zellij attach -c my-project

这在脚本和自动化场景中非常实用,避免了需要先判断会话是否存在的麻烦。

会话管理器

除了命令行操作外,Zellij 还提供了一个可视化的会话管理器。在 Zellij 内部按以下快捷键打开:

Ctrl+s → w

会话管理器会以列表形式展示所有运行中的会话。使用方向键(/)选择要恢复的会话,按 Enter 连接。这是一个直观且高效的方式来在多个会话之间切换。

返回博客列表