Kestra 2.0.6 Ubuntu 22.04 安装指南
在 Ubuntu 22.04 上从零安装 Kestra 2.0.6:JDK 25 安装、官方二进制包下载校验、首次启动、systemd 托管、认证配置与卸载全流程实测记录。
Kestra 2.0.6 Ubuntu 22.04 安装指南
目标:在 Ubuntu 22.04 上从零完成 Kestra 2.0.6 的下载校验、systemd 托管与认证配置。已在 Ubuntu 22.04 实测通过。
本文档所有命令与回显均来自 Ubuntu 22.04 实机安装实测(Kestra 2.0.6,2026-10-17),可逐条复现。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS
- 架构:x86_64(12 vCPU / 31 GiB 内存,根分区可用约 152G)
- Kestra 版本:2.0.6(revision b59444f,构建日期 2026-10-13)
- Java 版本:OpenJDK 25.0.4.1(
openjdk-25-jdk-headless) - 端口:8080(Web/API)
- 数据目录:
/opt/kestra(含confs配置、data数据、plugins插件、flowsFlow 文件) - 配置路径:
/opt/kestra/confs/application.yaml - 部署形态:单二进制 jar + systemd 托管(内嵌 H2)
二、Kestra 简介
2.1 Kestra 是什么
Kestra 是一个基于 Java 的事件驱动工作流编排平台(GitHub 约 29k star),采用 YAML 声明式定义工作流(Flow),内置 Web 编排控制台、调度器、队列与存储抽象,可用于数据管道、CI/CD 编排与自动化任务调度。发布件是一个自执行的 jar 文件(以 shell 脚本前缀包装,双态文件),下载后赋予执行权限即可启动,无需传统意义上的"安装包解压"。
- 官网:https://kestra.io
- 源码:https://github.com/kestra-io/kestra
- 本篇实测版本:2.0.6(revision b59444f,构建日期 2026-10-13)
2.2 实测环境
| 项目 | 实测值 |
|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS |
| 架构 | x86_64 |
| CPU | 12 vCPU |
| 内存 | 31 GiB |
| 数据盘 | 根分区 786G,可用约 152G |
| Java | OpenJDK 25.0.4.1(apt 仓库版本 25.0.4.1+1-1~22.04.4) |
| Kestra | 2.0.6 |
| 安装目录 | /opt/kestra |
| 服务端口 | 8080 |
💡 技术拓展:Kestra 官方支持 Ubuntu、Debian、RHEL 系列与多种运行方式(单二进制 jar、Docker、Docker Compose、Helm)。本篇走最通用的"单二进制 jar + systemd 托管"路线,不依赖任何专用包仓库;Docker Compose 部署见《Kestra 2.0.6 Docker Compose 部署指南》。
2.3 版本与发布件说明
Kestra 官方发布件托管在 GitHub Releases,每个版本提供同名二进制文件与 checksums_sha256.txt 校验文件,例如 2.0.6:
- 二进制文件:https://github.com/kestra-io/kestra/releases/download/v2.0.6/kestra-2.0.6
- 校验文件:https://github.com/kestra-io/kestra/releases/download/v2.0.6/checksums_sha256.txt
2.0.6 二进制文件实测大小为 130861812 字节(约 125 MB),SHA-256 校验值 c3c46e70ecda67cb8671dfbdcb848710c40a02666a56e794ef27d01da83d7922(后文校验步骤输出)。
💡 技术拓展:Kestra 各版本的发行说明与变更日志可在 https://github.com/kestra-io/kestra/releases 查看。从 2.0.5 升级到 2.0.6 的实测过程(含数据迁移验证)见《Kestra 2.0.6 进阶实战与运维》。
三、安装 JDK
3.1 为什么需要 JDK 25
Kestra 2.0.x 官方要求 Java 21 及以上版本。Ubuntu 22.04 的 jammy-updates 官方源已收录 openjdk-25-jdk-headless,可直接 apt 安装,无需添加第三方仓库。
3.2 更新软件源
apt-get update
回显:
Get:4 https://security.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1257 kB]
Get:5 https://security.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [68.4 kB]
Get:6 https://security.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [4962 kB]
Fetched 6769 kB in 6s (1132 kB/s)
Reading package lists... Done
3.3 安装 OpenJDK 25
apt-get install -y openjdk-25-jdk-headless
回显(安装输出末尾节选):
Setting up ca-certificates-java (20190909ubuntu1.3) ...
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
Processing triggers for ca-certificates (20260601~22.04.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
done.
3.4 验证 Java
java -version
which java
回显:
openjdk version "25.0.4.1" 2026-08-18
OpenJDK Runtime Environment (build 25.0.4.1+1-1-22.04.4-Ubuntu)
OpenJDK 64-Bit Server VM (build 25.0.4.1+1-1-22.04.4-Ubuntu, mixed mode, sharing)
/usr/bin/java
⚠️ 排障实录:如果系统同时存在多个 JDK,
/usr/bin/java可能指向旧版本。可用update-alternatives --config java交互选择默认 Java。实测 OpenJDK 25.0.4.1 运行 Kestra 2.0.6 启动、编排、升级链路全部正常(官方要求 Java 21 及以上)。
💡 技术拓展:Ubuntu 22.04 源中同时提供 openjdk-21-jre-headless(候选版本
21.0.12.1+1-1~22.04.4)。若只运行 Kestra,装openjdk-25-jre-headless(无编译器的纯运行时)就够;本文装 jdk-headless 是为了同时获得jps等诊断工具,便于后续验证 JVM 参数。
四、下载与校验 Kestra
4.1 创建目录并下载
mkdir -p /opt/kestra && cd /opt/kestra
wget -q https://github.com/kestra-io/kestra/releases/download/v2.0.6/kestra-2.0.6
ls -la
回显(ls -la 输出,只列出文件行):
-rw-r--r-- 1 root root 130861812 Oct 17 00:21 kestra-2.0.6
⚠️ 排障实录:若服务器到 GitHub 直连不稳定,可在 wget 命令中显式指定代理(如
-e use_proxy=yes -e https_proxy=http://<代理地址>:<端口>),或改用wget -c断点续传重新执行同一命令。实测单次完整下载约 12~30 秒(视网络带宽,130 MB 文件实测峰值 18.8 MB/s)。
4.2 下载官方校验文件并校验
curl -sL https://github.com/kestra-io/kestra/releases/download/v2.0.6/checksums_sha256.txt | tee checksums_sha256.txt
sha256sum -c checksums_sha256.txt
回显:
kestra-2.0.6: c3c46e70ecda67cb8671dfbdcb848710c40a02666a56e794ef27d01da83d7922
kestra-2.0.6: OK
4.3 赋予执行权限并确认版本
chmod +x kestra-2.0.6
./kestra-2.0.6 --version
回显(第一行 WARN 为版本查询时的固定日志,随版本号一并输出):
01:10:12.295 WARN main i.m.p.PrometheusMeterRegistry The meter (MeterId{name='netty.alloc.arena.allocation.count', tags=[tag(arena.number=0),tag(memory=direct),tag(size=small)]}) registration has failed: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter named 'netty_alloc_arena_allocation_count' containing tag keys [arena_number, memory]. The meter you are attempting to register has keys [arena_number, memory, size]. Note that subsequent logs will be logged at debug level.
2.0.6
⚠️ 排障实录:首次执行
./kestra-2.0.6 --version时会先输出一行 WARN 日志(Prometheus meter 注册相关),随后在下一行打印版本号2.0.6,该 WARN 为正常现象可忽略。若提示-bash: ./kestra-2.0.6: Permission denied,说明漏了chmod +x。
💡 技术拓展:这个文件是"双态文件"——本质是一个带 shell 脚本前缀的自解压 jar,既可以直接执行(
./kestra-2.0.6 server local),也可以用java -jar kestra-2.0.6 server local显式运行。前者会自动寻找java并传递JAVA_OPTS环境变量给 JVM,本篇全部采用直接执行方式。
4.4 认识命令行入口
./kestra-2.0.6 --help
回显(Commands 节选):
Commands:
server Start a kestra server
flow Manage flows
namespace Manage namespaces
plugins Manage plugins
templates Manage templates
task Execute tasks
execution Manage executions
execution-history Manage executions data
trigger Manage triggers
sys Perform system operations
templates-validate Validate templates
media Manage media
最常用的入口是 server local(单机全功能模式,一键启动 WebServer、Executor、Scheduler、Indexer 等全部服务,内嵌 H2 数据库)与 server standalone(按角色拆分的多进程模式,用于集群部署)。--help 之外的验证方式:启动后用 ./kestra-2.0.6 server --help 可查看全部服务角色列表。
五、首次启动
5.1 前台启动测试
先以前台方式启动一次,观察初始化日志,确认可以正常运行后按 Ctrl+C 停止,再转入正式的托管方式:
./kestra-2.0.6 server local
启动日志回显(节选,约 30~50 秒完成初始化):
01:10:31.026 INFO main i.k.c.c.s.AbstractServerCommand Machine information: 12 available cpu(s), 16032MB max memory, Java version 25.0.4.1+1-1-22.04.4-Ubuntu
01:10:34.274 INFO standalone-runner_0 io.kestra.executor.DefaultExecutor Executor started with 12 thread(s)
01:10:35.377 INFO standalone-runner_1 i.kestra.scheduler.DefaultScheduler Scheduler started with 12 thread(s) [timezone=GMT]
01:10:35.748 INFO standalone-runner_2 io.kestra.worker.AbstractWorker Worker started with 12 thread(s)
其中 Machine information 一行的 max memory 是 JVM 可用堆上限:默认未配置 -Xmx 时,JVM 按 -XX:MaxRAMPercentage=50.0(物理内存的一半)取值,本文环境物理内存 31GiB,因此显示 16032MB。如何把堆内存收敛到 512MB 见第七章(systemd 单元的 JAVA_OPTS)。server local 会以单进程多角色模式启动(日志中可依次看到 Executor、Scheduler、Worker 的启动行)。
5.2 后台启动(nohup 方式,临时使用)
cd /opt/kestra
JAVA_OPTS="-Xms256m -Xmx512m" nohup ./kestra-2.0.6 server local > /var/log/kestra-local.log 2>&1 &
命令无输出(nohup 后台化)。查看进程确认:
ps -ef | grep java
回显(单行,已折行展示):
root 1130 1 4 00:44 ? 00:01:09 java -XX:MaxRAMPercentage=50.0 -Xms256m -Xmx512m --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED -jar ./kestra-2.0.6 server local --config /opt/kestra/confs/application.yaml
可以看到 JAVA_OPTS 中的 -Xms256m -Xmx512m 已生效——Kestra 启动脚本会把它插到自身默认参数 -XX:MaxRAMPercentage 之后。再确认监听端口:
ss -tln | grep 8080
回显:
LISTEN 0 4096 *:8080 *:*
(ss 未安装时先执行 apt-get install -y iproute2。)
5.3 健康验证
curl -s -o /dev/null -w "root=%{http_code}\n" http://localhost:8080/
curl -s -o /dev/null -w "ping=%{http_code}\n" http://localhost:8080/ping
回显:
root=307
ping=200
/返回 307 重定向到 Web UI 的登录/首页,属正常;/ping返回 200 表示服务存活。
⚠️ 排障实录:默认未配置认证时,直接访问业务 API 同样要求登录,返回 401 与一段 JSON 报错,这不是故障:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8080/api/v1/configs
401
{"message":"Unauthorized","_embedded":{"errors":[{"message":"Unauthorized"}]}}
配置用户名密码后用 -u 携带凭证即可通过(见第八章)。
六、创建系统用户与目录规划
用 root 直接跑常驻服务不是好习惯,创建专用系统用户并规划目录:
useradd -r -s /usr/sbin/nologin kestra
id kestra
mkdir -p /opt/kestra/confs /opt/kestra/data /opt/kestra/plugins /opt/kestra/flows
chown -R kestra:kestra /opt/kestra
ls -ld /opt/kestra /opt/kestra/confs /opt/kestra/data /opt/kestra/plugins
回显:
uid=999(kestra) gid=999(kestra) groups=999(kestra)
drwxr-xr-x 5 kestra kestra 4096 Oct 17 01:17 /opt/kestra
drwxr-xr-x 2 kestra kestra 4096 Oct 17 01:17 /opt/kestra/confs
drwxr-xr-x 2 kestra kestra 4096 Oct 17 01:17 /opt/kestra/data
drwxr-xr-x 2 kestra kestra 4096 Oct 17 01:17 /opt/kestra/plugins
目录用途:
| 目录 | 用途 |
|---|---|
/opt/kestra | kestra-2.0.6 主程序所在目录 |
/opt/kestra/confs | application.yaml 配置文件 |
/opt/kestra/data | 内嵌 H2 数据库、日志与本地存储数据 |
/opt/kestra/plugins | 运行期自动下载的插件 jar |
/opt/kestra/flows | 本地 Flow 定义文件(配合 CLI 校验/导入) |
七、systemd 托管(开机自启)
7.1 编写服务单元
cat > /etc/systemd/system/kestra.service <<'EOF'
[Unit]
Description=Kestra Event-Driven Declarative Orchestrator
Documentation=https://kestra.io/docs/
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/sh /opt/kestra/kestra-2.0.6 server local --config /opt/kestra/confs/application.yaml
Environment="JAVA_OPTS=-Xms256m -Xmx512m"
WorkingDirectory=/opt/kestra
Environment=KESTRA_PLUGINS_PATH=/opt/kestra/plugins
Restart=always
RestartSec=5
KillMode=mixed
TimeoutStopSec=150
SuccessExitStatus=143
SyslogIdentifier=kestra
User=kestra
Group=kestra
[Install]
WantedBy=multi-user.target
EOF
命令无输出。
💡 技术拓展:三个容易踩坑的单元字段—— ①
Environment="JAVA_OPTS=-Xms256m -Xmx512m"的引号不能省:systemd 里Environment=NAME=value不加引号时,值中第一个空格之后的内容会被当作第二个变量定义,实测曾出现-Xmx512m被静默丢弃、JVM 只拿到-Xms256m的故障; ②SuccessExitStatus=143:Kestra 收到 SIGTERM 优雅退出时返回 143(128+15),不声明会被 systemd 记为 failed; ③TimeoutStopSec=150:Kestra 关停时要等调度/执行任务收尾,默认 90 秒有时不够,实测完整退出约需 8~12 秒,留 150 秒余量。 注意:systemd 单元一次只托管一个单元(本篇只建 kestra.service);如需同时管理 PostgreSQL,单独为其建立单元。
7.2 写入基础配置文件
服务单元引用了 /opt/kestra/confs/application.yaml,先创建它(详细参数含义见《Kestra 2.0.6 配置参数详解》):
cat > /opt/kestra/confs/application.yaml <<'EOF'
kestra:
server:
basic-auth:
username: admin@example.com
password: q1w2E3r4
anonymous-usage-report:
enabled: false
EOF
chown -R kestra:kestra /opt/kestra/confs
命令无输出。
💡 技术拓展:Kestra 用户名必须是邮箱格式(UI 登录与 Basic 认证都按邮箱校验)。密码实测规则:包含大小写与数字的组合(如
q1w2E3r4)可正常通过认证;改成全小写弱密码q1w2e3r4后服务能启动,但 Basic 认证会返回 401(后文 6.5 验证)。
7.3 启动并设置开机自启
systemctl daemon-reload
systemctl enable kestra
systemctl start kestra
enable 回显:
Created symlink /etc/systemd/system/multi-user.target.wants/kestra.service → /etc/systemd/system/kestra.service.
start 无输出。等待约 40 秒完成首次初始化后验证:
systemctl is-enabled kestra
systemctl is-active kestra
systemctl status kestra --no-pager
回显:
enabled
active
● kestra.service - Kestra Event-Driven Declarative Orchestrator
Loaded: loaded (/etc/systemd/system/kestra.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2026-10-17 00:33:47 UTC; 42s ago
Docs: https://kestra.io/docs/
Main PID: 413 (java)
Tasks: 127 (limit: 5753)
Memory: 695.6M
CPU: 24.938s
CGroup: /system.slice/kestra.service
└─413 java -XX:MaxRAMPercentage=50.0 -Xms256m -Xmx512m --add-opens=java.base/java.nio=ALL-UNNAMED ... server local --config /opt/kestra/confs/application.yaml
7.4 验证 JVM 参数生效
ps -ef | grep java | grep -v grep
回显(单行,已折行展示):
kestra 1821 1 9 01:13 ? 00:00:38 java -XX:MaxRAMPercentage=50.0 -Xms256m -Xmx512m --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED -jar /opt/kestra/kestra-2.0.6 server local --config /opt/kestra/confs/application.yaml
-Xms256m -Xmx512m 出现在参数串中,说明 systemd 注入的 JAVA_OPTS 已被启动脚本读取。再从运行日志交叉验证堆上限:
journalctl -u kestra --no-pager | grep -a "Machine information" | tail -1
回显:
Oct 17 01:13:41 0e4bc4c3ce89 kestra[1821]: 01:13:41.078 INFO main i.k.c.c.s.AbstractServerCommand Machine information: 12 available cpu(s), 512MB max memory, Java version 25.0.4.1+1-1-22.04.4-Ubuntu
512MB max memory 与 -Xmx512m 一致,闭环确认。也可用 jps -v(JDK 自带)得到同样的参数串。
⚠️ 排障实录:曾实测把 unit 写成不带引号的
Environment=JAVA_OPTS=-Xms256m -Xmx512m,重启后ps -ef里只剩-Xms256m,日志Machine information显示 16032MB(默认物理内存一半)——空格被 systemd 当作变量分隔符,-Xmx512m整体丢失且无任何告警。修复为引号包裹形式后恢复正常。
7.5 认证行为验证
curl -s -o /dev/null -w "noauth=%{http_code}\n" http://localhost:8080/api/v1/configs
curl -s -o /dev/null -w "auth=%{http_code}\n" -u admin@example.com:q1w2E3r4 http://localhost:8080/api/v1/configs
回显:
noauth=401
auth=200
携带凭证后返回 200,Web UI(浏览器访问 http://<服务器IP>:8080)也用同一组邮箱+密码登录。
⚠️ 排障实录:把配置中的密码临时改成弱密码
q1w2e3r4并重启后,服务状态仍是 active,但同一接口用新密码认证返回 401——Kestra 2.0.6 不在启动期校验密码复杂度,而是登录期按内置规则拒绝弱密码。恢复q1w2E3r4后认证恢复 200。排障时若"服务正常但登录不上",先检查密码是否包含大小写与数字组合。
7.6 日志与日常管理
journalctl -u kestra --no-pager -n 3
回显:
Oct 17 00:02:16 0e4bc4c3ce89 kestra[43]: 00:02:16.576 INFO scheduler-scheduling-loop_3 i.kestra.scheduler.TriggerScheduler Starting trigger scheduling for [3, 15] vNodes
Oct 17 00:02:16 0e4bc4c3ce89 kestra[43]: 00:02:16.155 INFO scheduler-scheduling-loop_4 i.kestra.scheduler.TriggerScheduler Starting trigger scheduling for [4] vNodes
Oct 17 00:02:16 0e4bc4c3ce89 kestra[43]: 00:02:16.655 INFO scheduler-scheduling-loop_2 i.kestra.scheduler.TriggerScheduler Starting trigger scheduling for [1] vNodes
日常管理命令:
systemctl restart kestra # 重启(优雅停启,实测全程约 25 秒)
systemctl stop kestra # 停止
systemctl status kestra # 查看状态
⚠️ 排障实录:服务异常时优先
journalctl -u kestra -n 200 --no-pager查日志,其次检查/opt/kestra/confs/application.yaml配置语法(H2 数据库文件锁问题见下文 8.1)。
八、常见问题(FAQ)
8.1 启动报 Database may be already in use
进程未完全退出就再次启动时,实测报错(启动输出节选):
Message: Failed to initialize pool: Database may be already in use: "/opt/kestra/data/database.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-240]
Path Taken:
原因:H2 数据库文件被上一个实例的连接占用(默认 H2 只允许单进程独占)。处理:确认旧进程已退出(ps -ef | grep java、jps -l)后再启动;必要时等待 10~30 秒让文件锁释放。这也是建议用 systemd 托管(KillMode=mixed + 优雅停等)而非手工 kill 的原因。
8.2 端口 8080 被占用
服务起不来时,先确认 8080 端口是否已被其他进程占用:ss -tln | grep 8080。若 8080 需要留给其他服务,可在 application.yaml 中修改端口:
micronaut:
server:
port: 8082
实测改完后重启,ss -tln | grep 808 确认新端口已监听、原 8080 不再监听:
LISTEN 0 4096 *:8082 *:*
API 与 Web UI 一并迁移到 8082。注意 Kestra Flow 内通过 http://localhost:8080 调用自身 API 的任务要同步改端口。
8.3 忘记/需要修改管理密码
直接编辑 /opt/kestra/confs/application.yaml 中的 kestra.server.basic-auth.password,然后 systemctl restart kestra。新密码需包含大小写字母与数字的组合(实测 q1w2E3r4 通过、q1w2e3r4 认证 401)。
8.4 systemd 服务反复重启(exit status 217/USER)
服务单元里的 User=kestra 指向的用户被删除后(例如误执行了 userdel -r kestra),systemd 无法切换用户,服务进入重启循环,journalctl -u kestra --no-pager -n 6 实测回显:
kestra.service: Failed with result 'exit-code'.
kestra.service: Scheduled restart job, restart counter is at 14.
Stopped Kestra Event-Driven Declarative Orchestrator.
Started Kestra Event-Driven Declarative Orchestrator.
kestra.service: Main process exited, code=exited, status=217/USER
kestra.service: Failed with result 'exit-code'.
status=217/USER 即"切换用户失败"。处理:重建用户并恢复目录属主后重启服务:
useradd -r -s /usr/sbin/nologin kestra
chown -R kestra:kestra /opt/kestra
systemctl restart kestra
重建后 id kestra 回显 uid=999(kestra) ...(与删除前一致的 UID,因为系统用户 UID 回收复用),服务恢复正常。
8.5 升级
停止服务、替换二进制文件、重启即可,Kestra 启动时自动完成数据库结构迁移。完整的 2.0.5 → 2.0.6 升级实测(含数据连续性验证、备份与回滚预案)见《Kestra 2.0.6 进阶实战与运维》。
九、卸载
9.1 停止并禁用服务
systemctl disable kestra
systemctl stop kestra
systemctl is-active kestra
disable 回显:
Removed /etc/systemd/system/multi-user.target.wants/kestra.service.
stop 无输出,is-active 回显 inactive。
9.2 删除服务单元与用户
rm -f /etc/systemd/system/kestra.service
systemctl daemon-reload
userdel -r kestra
userdel -r kestra 回显:
userdel: kestra mail spool (/var/mail/kestra) not found
userdel: kestra home directory (/home/kestra) not found
(系统用户创建时未指定 home 与邮箱,这两行提示属正常。)
9.3 删除程序与数据
rm -rf /opt/kestra
rm -f /var/log/kestra-local.log
9.4 卸载 JDK(可选)
apt-get purge -y openjdk-25-jdk-headless openjdk-25-jre-headless
apt-get autoremove -y
purge 回显(节选):
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up default-jre-headless (2:1.11-72build2) ...
(Reading database ... 6967 files and directories currently installed.)
Purging configuration files for openjdk-25-jre-headless:amd64 (25.0.4.1+1-1~22.04.4) ...
(purge 过程中 alternatives 自动把 pack200 等命令指向机器上剩余的 openjdk-11——本机另装了 openjdk-11,读者机器若无其他 JDK 则无这些行。)
autoremove 回显(节选):
Running hooks in /etc/ca-certificates/update.d...
updates of cacerts keystore disabled.
done.
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...
最终验证:
java -version
ls /opt/
回显:
bash: line 1: java: command not found
(ls /opt/ 无输出,目录已清空。)
至此 Kestra 及其运行环境完全卸载。若曾通过 systemd 方式运行过,还需确认 /var/log/journal 下历史日志按需清理(journalctl --vacuum-time=7d 可清理 7 天前日志)。