本文目录导读:

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)
使用建议
- 简单任务:使用
sleep/timeout命令 - 精确调度:使用
at命令或调度器 - 异步任务:使用 Python threading 或 Node.js setTimeout
- 复杂工作流:使用专门的调度系统(如 Airflow、Celery)
选择哪种方案取决于你的操作系统和具体需求,对于简单的延迟执行,Shell或Python脚本就足够了。