crontab-tasks: 定时任务项目小结
一个定时任务的项目总结
背景 Why
为什么会有这个项目,原来我使用的是 cron-conf 这个 nodejs 项目 + pm2 方式管理定时任务。
问题:
- 内存占用高,pm2 经常出这样那样的问题 (原来 48% → 60% 左右),换成
crontab
内存基本没有增长 %0- 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