[App Sharing] GXDE-K9 适配 Termux: 无需systemd驱动的crontab/watchdog管理器
Tofloor
poster avatar
神末shenmo
deepin
Spark-App
2024-12-03 23:27
Author

GXDE K9

GXDE K9 是一个轻量级的脚本监控与定时任务执行工具,支持自动执行 .slimy 脚本并根据定时器配置文件的规则触发任务。

K9是警犬的英文音译(canine).ca-nine,GXDE-K9是一个简单的用户态watchdog,如果你因为种种原因无法使用systemd(比如正在容器中使用),则可用gxde-k9实现一个基本的服务拉起工具/定时任务工具

非常适用于使用termux/proot-distro/需要一个简单的服务管理器但又不想写systemd的朋友

在termux上,仅需下载 https://gitee.com/GXDE-OS/gxde-k9/blob/master/src/usr/bin/gxde-k9 文件并运行 bash ./gxde-k9 --termux 即可开始使用,无任何外部依赖


功能特点

  1. 监控指定目录下的 .slimy 脚本,每 5 秒自动执行一次。
  2. 支持 crontab 格式的定时任务,通过 .timer 文件配置触发条件和执行指令。
  3. 自动检测并清理僵尸锁文件,防止多次运行。
  4. 支持自定义 PID 文件路径,方便灵活部署。

用法

把需要监视启动的服务参照 这个模板 修改好后,后缀名改为 .slimy并放入指定路径/slimy即可监控

把需要定时执行的任务参照 crontab 语法写好后,后缀名为 .timer,放入指定路径/timer即可定时执行任务

示例:

* * * * *|echo "每分钟运行"
*/2 * * * *|echo "每2分钟运行"
0 12 * * *|bash /path/to/script.sh
用法: ./gxde-k9 [选项]

选项:
  --base-dir <路径>     指定监视 .slimy .timer .shot 脚本的目录。
  --pid-dir <路径>       指定 PID 目录的位置。
  --termux               使用 ${HOME}/gxde-k9/ 作为监视目录,以适配 termux 环境。
  -h                     显示此帮助信息并退出。

描述:
  K9 Lick Daemon 2 代监视指定目录中的 .slimy 脚本并执行它们。它还支持具有类 crontab 调度的 .timer 文件。
  默认情况下,它监视 $SLIMY_DIR_SYSTEM 和 $TIMER_DIR_SYSTEM,以及用户特定的目录:$SLIMY_DIR_USER 和 $TIMER_DIR_USER。

定时器示例:
* * * * * | <命令>
- - - - - -
| | | | | |
| | | | | +--- 重要提示: K9 需要额外的 '|' 来识别命令!!!!!!!!!
| | | | +----- 星期几 (0 - 7) (星期天=0 或 7)
| | | +------- 月份 (1 - 12)
| | +--------- 月日 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)


Usage: $0 [options]

Options:
  --base-dir     Specify the directory to monitor for .slimy .timer .shot scripts.
  --pid-dir      Specify the location for the PID DIR.
  --termux             Use ${HOME}/gxde-k9/ as monitor directory to adapt termux.
  -h                   Show this help message and exit.

Description:
  K9 Lick Daemon gen 2 monitors a specified directory for .slimy scripts
  and executes them. It also supports .timer files with crontab-like schedules.
  By default, it monitors $SLIMY_DIR_SYSTEM and $TIMER_DIR_SYSTEM, as well as
  user-specific directories: $SLIMY_DIR_USER and $TIMER_DIR_USER.

Timer Example:
* * * * * | 
- - - - - -
| | | | | |
| | | | | +--- IMPORTANT: K9 Need an extra '|' to identify commands !!!!!!!!!!
| | | | +----- Day of week (0 - 7) (Sunday=0 or 7)
| | | +------- Month (1 - 12)
| | +--------- Day of month (1 - 31)
| +----------- Hour (0 - 23)
+------------- Minute (0 - 59)

注意:如果是使用root启动,则默认的系统slimy和timer位置为

/usr/share/gxde-k9/system/slimy/ and /usr/share/gxde-k9/system/timer/

目录结构

.
├── shot
├── slimy
└── timer

3 directories, 0 files
  • shot 目录:存放启动时执行一次的 .shot 文件
  • slimy 目录:存放需要自动执行的 .slimy 脚本。
  • timer 目录:存放定时器配置文件 .timer 文件

示例

  1. 默认启动:

    gxde-k9
    
  2. 监控自定义目录并指定 PID 文件:

    gxde-k9 --base-dir /my/slimy/scripts --pid-dir /tmp/mydaemon/
    
  3. 在termux上使用:

    gxde-k9 --termux
    
Reply Favorite View the author
All Replies
柠萌~
deepin
2024-12-04 01:26
#1

like

Reply View the author
柠萌~
deepin
2024-12-04 01:26
#2

感谢分享 like

Reply View the author
新手来啦~
deepin
2024-12-04 07:12
#3

干嘛用的

Reply View the author
(´◓Д◔`)
deepin
2024-12-04 07:38
#4

💯

Reply View the author
trutheeker
deepin
2024-12-04 10:39
#5

这个不错,是需求痛点,支持

Reply View the author
ieusr1203
deepin
2024-12-04 11:00
#6

like

Reply View the author
观摩
deepin
2024-12-04 11:01
#7
新手来啦~

干嘛用的

神末shenmo 说

主要是用于无init的场景

就GXDE而言,是安卓设备

目前我们的想法是尽量不使用systemd以提高可移植性

Reply View the author
神末shenmo
deepin
Spark-App
2024-12-04 16:23
#8
观摩

神末shenmo 说

主要是用于无init的场景

就GXDE而言,是安卓设备

目前我们的想法是尽量不使用systemd以提高可移植性

现在又发一次是做了拆分,现在不绑定GXDE了,在BSD,termux,或者如果可以的话,OpenHarmony或者鸿蒙都能用了,只要能跑bash和coreutils,都能用了

Reply View the author
神末shenmo
deepin
Spark-App
2024-12-04 16:23
#9
新手来啦~

干嘛用的

服务管理器,如果应用软件崩溃了自动重新启动/定时执行特定任务

Reply View the author
Oli
deepin
2024-12-06 06:39
#10

like

Reply View the author