crontab-tasks: 定时任务项目小结

一个定时任务的项目总结
更新于: 2024-11-17 10:19:54

背景 Why

为什么会有这个项目,原来我使用的是 cron-conf 这个 nodejs 项目 + pm2 方式管理定时任务。

问题: 

  1. 内存占用高,pm2 经常出这样那样的问题 (原来 48% → 60% 左右),换成 crontab 内存基本没有增长 %0
  2. node_modules 经常安装各种网络问题

核心脚本

  • 定时部分
  • 计划部分
    • cron不会加载 .bashrc 内容,所以,重要的ENV需要手动加载
    • 写好脚本,记录log

定时任务语法: 

minute hour day-of-month month day-of-week command
0 0 * * * /root/aric-server/crontab-tasks/servers/$(hostname)/jsw_db_backup.sh
#!/bin/bash

# load .bashrc
CMD_NODE_MODULES="$HOME/github/ubuntu-settings/node_modules"
source "$CMD_NODE_MODULES/@afeiship/ushell-module-secret/modules/leancloud.sh"
source "$CMD_NODE_MODULES/@afeiship/ushell-module-ubuntu/index.sh"

# 定义日志目录和文件
LOG_DIR="${CRONTAB_TASKS}/logs/jsw-db-backup"
LOG_FILE="${LOG_DIR}/backup.log"
LOG_ERR_FILE="${LOG_DIR}/backup.err"

# 创建日志目录(如果不存在)
mkdir -p "$LOG_DIR"

# 执行备份命令
cd $HOME/aric-jswork/jsw-rails/db || exit 1
$HOME/bin/bpc -s production.sqlite3 -d /Websites/js.work/db_backup/ -vt >> "$LOG_FILE" 2>&1

备份 crontabs

备份这个目录即可 /var/spool/cron 参考这里

手动备份 crontabs

备份文件位置
# 常规
cd $CRONTAB_TASKS
yarn run backup:cron

# quick
cns && ntl