关于 delayed-command
delayed-command 是一项用于等待指定时长后运行 Bash 命令的技能。它支持组合小时、分钟和秒;较短等待同步执行,较长等待则在后台运行。
主要功能
- 01解析小时、分钟和秒格式的时长
- 02在指定延迟后运行命令
- 03等待不超过 10 分钟时同步执行
- 04较长等待在后台运行
- 05报告输出、退出状态和耗时
适用场景
- 01短暂等待后运行命令
- 02将 Shell 任务延后并在后台执行
- 03延迟执行部署或提交命令
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill delayed-command安装后在 Claude Code 中输入/delayed-command确认已加载。
详细介绍
延迟执行命令
等待指定时长后,执行 Bash 命令。
参数
- duration:执行前的等待时长(例如,
30s、5m、1h、1h30m) - command:延迟结束后要运行的 Bash 命令
时长格式
| 格式 | 示例 | 含义 |
|---|---|---|
Xs | 30s | 30 秒 |
Xm | 5m | 5 分钟 |
Xh | 1h | 1 小时 |
XhYm | 1h30m | 1 小时 30 分钟 |
XhYmZs | 1h5m30s | 1 小时 5 分 30 秒 |
工作流
1. 解析时长
将时长参数转换为秒:
- 提取小时(
h)、分钟(m)和秒(s)部分 - 计算总秒数:
hours * 3600 + minutes * 60 + seconds
解析逻辑:
duration="$1"
seconds=0
# Extract hours
if [[ $duration =~ ([0-9]+)h ]]; then
seconds=$((seconds + ${BASH_REMATCH[1]} * 3600))
fi
# Extract minutes
if [[ $duration =~ ([0-9]+)m ]]; then
seconds=$((seconds + ${BASH_REMATCH[1]} * 60))
fi
# Extract seconds
if [[ $duration =~ ([0-9]+)s ]]; then
seconds=$((seconds + ${BASH_REMATCH[1]}))
fi
2. 延迟执行
对于不超过 10 分钟(600 秒)的时长:
使用 Bash 工具同步运行,并设置适当的超时时间:
sleep <seconds> && <command>
将 Bash 工具的 timeout 参数设为至少 (seconds + 60) * 1000 毫秒。
对于超过 10 分钟的时长:
使用 run_in_background: true 在后台运行:
sleep <seconds> && <command>
告知用户命令正在后台运行,并提供用于查询状态的任务 ID。
3. 报告结果
执行完成后:
- 显示命令输出
- 报告退出状态
- 注明总耗时
示例
短延迟(同步)
用户:/delayed-command 5m npm test
- 解析:5 分钟 = 300 秒
- 执行:
sleep 300 && npm test(超时:360000ms) - 报告测试结果
长延迟(后台)
用户:/delayed-command 1h git commit -m "auto-commit"
- 解析:1 小时 = 3600 秒
- 在后台执行:
sleep 3600 && git commit -m "auto-commit" - 返回用于查询状态的任务 ID
组合时长
用户:/delayed-command 1h30m ./deploy.sh
- 解析:1h30m = 5400 秒
- 在后台执行(>600s):
sleep 5400 && ./deploy.sh - 告知用户后台任务的相关信息
错误处理
| 错误 | 响应 |
|---|---|
| 时长格式无效 | 显示支持的格式和示例 |
| 缺少命令参数 | 提示输入要执行的命令 |
| 找不到命令 | 延迟结束后报告错误 |
| 时长超过 24 小时 | 警告用户并建议其他方式(cron、at) |
评论
支持 Markdown