服务管理
查看服务器在后台跑的每一个服务,关掉其中一个,或者立刻跑一次某个任务。
概览
媒体服务器的大部分工作都发生在没人看的时候:刷新 RSS、对账媒体库、投递通知、应付外部播放器。设置 › 服务把这些全部放在一页上——什么在跑、上次什么时候跑的、跑了多久、出了什么错。
列出哪些东西
| 类型 | 例子 |
|---|---|
| API | Infuse、VLC、Kodi、mpv 用的 Jellyfin 兼容层。 |
| Worker | 调度器的定时任务——RSS 刷新、下载同步、媒体库对账、通知投递、播出提醒、每日摘要、AniDB 映射刷新、观看同步系列任务、通知清理。 |
| Daemon | 下载器、转码缓存、观看同步、偏好备份。 |
| Bot | Telegram 与 Discord 机器人。 |
每一行都带有它的排程、是否启用、此刻是否在跑、上次运行的时间与耗时、那次运行的错误(如果有),以及下次何时到期。
关掉一个服务
大部分服务都有开关。停用的 worker 不再被排程;停用的 bot 会断开连接;停用的 Jellyfin 层对所有路由返回 503 并停掉局域网发现响应器,外部播放器就不会再在网络上找到这台服务器。
下载同步和通知投递不能关闭——少了它们服务器的状态就不再自洽。
立刻跑一次
任何 worker 都可以立刻执行,不必等下一个 tick——这是验证改动最快的办法:保存一条 RSS 规则,跑一次 RSS 刷新,看它匹配到什么。已经在跑的任务不会被重复启动。
这一页是实时的:服务的启动、结束与开关都会通过 WebSocket 推给所有连接的客户端,所以在 Mac 应用里触发的任务,在浏览器里也会显示为运行中。
任务失败时
失败的一次运行会把错误记在服务上,并触发一条 system.service_failed 通知;该通知有限流,所以每分钟都失败的任务不会淹掉通知中心。想在离开服务器时也收到,就在设置 › 通知里把这个事件路由到 Telegram 或 Discord。
外部播放器
Jellyfin 区块会列出已登录的设备——客户端名称、设备名称、首次出现与最后活动时间。撤销其中一台只会让那台设备的 token 失效,其他会话照常可用,因为 token 现在会记录它是发给哪台设备的。
API
GET /api/v1/system/services 列出以上全部内容,PATCH /api/v1/system/services/{id} 启用或停用其中一个,POST /api/v1/system/services/{id}/run 触发一次任务。设备在 /api/v1/system/services/jellyfin/devices。见 API 参考。