随机
Enter 搜索 ↑↓ 切换 Esc 清空

crontab-new

命令

定时任务/计划任务 防重复追加配置

补充说明

crontab-new 用于在 Linux 上安全地为脚本添加定时任务,重点解决重复追加问题:通过「静默检查 + 合并重载」方式,先检查任务是否已存在,不存在时才合并写入,从根源避免同一任务被重复添加。

环境说明

功能特点

定时任务格式

分 时 日 月 周 执行命令
30 2 * * * /usr/local/bin/2panel_backup /vol2/1000/file/backup/2panel-backup 6 >> /var/log/2panel_backup.log 2>&1

配置步骤

1. 下载脚本到系统目录

下载 2panel_backup.sh 并保存为可执行命令 /usr/local/bin/2panel_backup:

curl -fsSL https://gitee.com/meimolihan/cmdbox/raw/master/sh/2panel_backup.sh -o /usr/local/bin/2panel_backup

2. 增加执行权限

chmod +x /usr/local/bin/2panel_backup

3. 测试运行一次

测试备份脚本(备份目录 /vol2/1000/file/backup/2panel-backup,保留 6 份):

2panel_backup /vol2/1000/file/backup/2panel-backup 6

4. 追加定时任务(防重复追加)

左侧先静默检查任务是否存在,不存在则右侧合并当前任务与新任务后重载写入,实现防重复追加:

(crontab -l 2>/dev/null | grep -Fq '/usr/local/bin/2panel_backup /vol2/1000/file/backup/2panel-backup 6') || (crontab -l 2>/dev/null; echo '30 2 * * * /usr/local/bin/2panel_backup /vol2/1000/file/backup/2panel-backup 6 >> /var/log/2panel_backup.log 2>&1') | crontab -

执行逻辑拆解:

步骤 命令片段 作用
检查 crontab -l 2>/dev/null | grep -Fq '...' 静默检查任务是否已存在
合并 crontab -l 2>/dev/null; echo '...' 保留原任务,末尾追加新任务
重载 | crontab - 将合并结果整体写入 crontab
短路 || 已存在则跳过,避免重复追加

可反复执行该命令多次,结果始终只有一条任务,不会重复。

5. 验证定时任务是否写入成功

crontab -l

输出中应包含:

30 2 * * * /usr/local/bin/2panel_backup /vol2/1000/file/backup/2panel-backup 6 >> /var/log/2panel_backup.log 2>&1

查看运行日志

# 查看日志是否生成
ls -l /var/log/2panel_backup.log

# 实时查看备份日志
tail -f /var/log/2panel_backup.log

删除定时任务

如需移除该任务,使用 crontab -e 手动删除对应行:

crontab -e

故障排查

定时任务未执行

# 查看状态
systemctl status cron

# 启动
systemctl start cron
# 开机自启
systemctl enable cron

无日志生成

检查脚本执行权限与日志文件所在目录写权限。

任务被重复添加

确认使用了第 4 步的「防重复追加」命令而非 echo ... >> 文件 方式,重复添加可手动用 crontab -e 清理多余行。

相关命令