如何编写设置任务延迟触发时长脚本

wen 实用脚本 33

本文目录导读:

如何编写设置任务延迟触发时长脚本

  1. Linux/Mac - Shell 脚本
  2. Windows - Batch 脚本
  3. Python 脚本(跨平台)
  4. Node.js 脚本
  5. 配置文件示例
  6. 实用脚本示例
  7. 使用建议

Linux/Mac - Shell 脚本

使用 sleep 命令延迟执行

#!/bin/bash
# 延迟后执行命令
echo "任务将在5秒后执行"
sleep 5
echo "执行任务: $(date)"
# 延迟后执行脚本文件
sleep 10 && ./your_script.sh

使用 at 命令(一次性任务)

# 安装at(如果没有)
sudo apt install at  # Ubuntu/Debian
sudo yum install at  # CentOS/RHEL
# 创建延迟任务
echo "echo '延迟任务执行: $(date)'" | at now + 5 minutes
echo "./backup.sh" | at now + 2 hours

Windows - Batch 脚本

@echo off
echo 任务将在5秒后执行
timeout /t 5 >nul
echo 执行任务: %date% %time%
REM 使用choice命令(更精确)
choice /t 10 /d y /n >nul
echo 10秒延迟后执行

Python 脚本(跨平台)

简单延迟

import time
from datetime import datetime, timedelta
import threading
# 基本延迟
print(f"任务将在5秒后执行: {datetime.now()}")
time.sleep(5)
print(f"执行任务: {datetime.now()}")
# 使用线程延迟执行
def delayed_task():
    print(f"延迟任务执行: {datetime.now()}")
# 5秒后执行
threading.Timer(5.0, delayed_task).start()

高级延迟调度

import sched
import time
# 创建调度器
scheduler = sched.scheduler(time.time, time.sleep)
def task(name):
    print(f"任务 {name} 执行时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
# 延迟5秒执行
scheduler.enter(5, 1, task, ("A",))
# 延迟10秒执行
scheduler.enter(10, 1, task, ("B",))
print("调度器开始运行...")
scheduler.run()

Node.js 脚本

// 简单延迟执行
console.log(`任务将在5秒后执行: ${new Date().toLocaleString()}`);
setTimeout(() => {
    console.log(`执行任务: ${new Date().toLocaleString()}`);
}, 5000);
// 带参数的任务
function delayedTask(name) {
    console.log(`任务 ${name} 执行于: ${new Date().toLocaleString()}`);
}
setTimeout(delayedTask, 3000, "备份任务");
// 延迟后执行Promise
function delay(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
    console.log("开始延迟...");
    await delay(5000);
    console.log("5秒后执行的任务");
}

配置文件示例

# config.yaml
tasks:
  - name: "备份数据库"
    delay: 300  # 5分钟后执行
    command: "mysqldump -u root database > backup.sql"
  - name: "发送通知"
    delay: 600  # 10分钟后执行
    command: "curl -X POST https://api.example.com/notify"

实用脚本示例

带进度显示的延迟脚本 (Python)

import time
import sys
def countdown_delay(seconds):
    print(f"等待 {seconds} 秒后执行...")
    for i in range(seconds, 0, -1):
        print(f"\r剩余时间: {i} 秒", end="")
        time.sleep(1)
    print("\r延迟结束!         ")
def delayed_execution(delay_seconds, command):
    """
    延迟执行命令
    :param delay_seconds: 延迟秒数
    :param command: 要执行的命令或函数
    """
    countdown_delay(delay_seconds)
    if callable(command):
        command()
    else:
        import subprocess
        subprocess.run(command, shell=True)
# 使用示例
def my_task():
    print(f"任务执行完成: {time.strftime('%Y-%m-%d %H:%M:%S')}")
delayed_execution(5, my_task)

使用建议

  1. 简单任务:使用 sleep/timeout 命令
  2. 精确调度:使用 at 命令或调度器
  3. 异步任务:使用 Python threading 或 Node.js setTimeout
  4. 复杂工作流:使用专门的调度系统(如 Airflow、Celery)

选择哪种方案取决于你的操作系统和具体需求,对于简单的延迟执行,Shell或Python脚本就足够了。

抱歉,评论功能暂时关闭!