From 098f89aa52a83105e49ef560b277057c1bb94000 Mon Sep 17 00:00:00 2001 From: whyour Date: Mon, 3 May 2021 19:18:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=9B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/schedule.ts | 37 +++++++++++++++++++++++++++++++++++++ docker/docker-entrypoint.sh | 15 ++++++++++++--- package.json | 24 +++++++++++++----------- shell/task.sh | 4 ++++ shell/update.sh | 2 +- 5 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 back/schedule.ts diff --git a/back/schedule.ts b/back/schedule.ts new file mode 100644 index 00000000..1fdad0db --- /dev/null +++ b/back/schedule.ts @@ -0,0 +1,37 @@ +import schedule from 'node-schedule'; +import DataStore from 'nedb'; +import config from './config'; +import { exec } from 'child_process'; +import Logger from './loaders/logger'; + +const db = new DataStore({ filename: config.cronDbFile, autoload: true }); + +const run = async () => { + db.find({}) + .sort({ created: 1 }) + .exec((err, docs) => { + if (err) { + Logger.error(err); + process.exit(1); + } + + if (docs && docs.length > 0) { + for (let i = 0; i < docs.length; i++) { + const task = docs[i]; + const _schedule = task.schedule && task.schedule.split(' '); + if (_schedule && _schedule.length > 5) { + schedule.scheduleJob(task.schedule, function () { + exec(task.command); + }); + } + } + } + }); +}; + +run(); +Logger.info(` + ################################################ + 🛡️ 定时任务schedule启动成功 🛡️ + ################################################ +`); diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index c74f2695..9ba314ba 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -14,17 +14,26 @@ cp -fv $dir_root/docker/front.conf /etc/nginx/conf.d/front.conf echo echo -e "======================3. 启动nginx========================\n" -nginx -s reload || nginx -c /etc/nginx/nginx.conf +nginx -s reload 2>/dev/null || nginx -c /etc/nginx/nginx.conf +echo -e "nginx启动成功...\n" echo echo -e "======================4. 启动控制面板========================\n" -pm2 start $dir_root/build/app.js -n panel +cd $dir_root +pm2 restart panel 2>/dev/null || pm2 start npm -n panel -- run panel echo -e "控制面板启动成功...\n" -echo -e "\n容器启动成功..." +echo -e "======================5. 启动定时任务========================\n" +cd $dir_root +pm2 restart schedule 2>/dev/null || pm2 start npm -n schedule -- run schedule +echo -e "定时任务启动成功...\n" + +echo -e "############################################################" +echo -e "容器启动成功..." echo -e "\n请先访问5700端口,登录面板成功之后先手动执行一次git_pull命令..." echo -e "\n如果需要启动挂机程序手动执行docker exec -it qinglong js hangup..." echo -e "\n或者去cron管理搜索hangup手动执行挂机任务..." +echo -e "############################################################" crond -f diff --git a/package.json b/package.json index 400d144a..9ec88463 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "build": "umi build", "build-back": "tsc -p tsconfig.back.json", "start-back": "nodemon", - "pm2": "npm run build-back && node build/app.js", + "panel": "npm run build-back && node build/app.js", + "schedule": "npm run build-back && node build/schedule.js", "prepare": "umi generate tmp", "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", "test": "umi-test", @@ -34,22 +35,13 @@ "jsonwebtoken": "^8.5.1", "nedb": "^1.8.0", "node-fetch": "^2.6.1", + "node-schedule": "^2.0.0", "reflect-metadata": "^0.1.13", "typedi": "^0.8.0", "winston": "^3.3.3" }, "devDependencies": { - "umi": "^3.3.9", - "umi-request": "^1.3.5", - "react-codemirror2": "^7.2.1", - "react-diff-viewer": "^3.1.1", - "react-dnd": "^14.0.2", - "react-dnd-html5-backend": "^14.0.0", - "qrcode.react": "^1.0.1", - "darkreader": "^4.9.27", - "codemirror": "^5.59.4", "@ant-design/pro-layout": "^6.5.0", - "@umijs/plugin-antd": "^0.9.1", "@types/cors": "^2.8.10", "@types/express": "^4.17.8", "@types/express-jwt": "^6.0.1", @@ -60,15 +52,25 @@ "@types/qrcode.react": "^1.0.1", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", + "@umijs/plugin-antd": "^0.9.1", "@umijs/test": "^3.3.9", + "codemirror": "^5.59.4", "compression-webpack-plugin": "6.1.1", + "darkreader": "^4.9.27", "lint-staged": "^10.0.7", "nodemon": "^2.0.4", "prettier": "^2.2.0", + "qrcode.react": "^1.0.1", "react": "17.x", + "react-codemirror2": "^7.2.1", + "react-diff-viewer": "^3.1.1", + "react-dnd": "^14.0.2", + "react-dnd-html5-backend": "^14.0.0", "react-dom": "17.x", "ts-node": "^9.0.0", "typescript": "^4.1.2", + "umi": "^3.3.9", + "umi-request": "^1.3.5", "webpack": "^5.28.0", "yorkie": "^2.0.0" } diff --git a/shell/task.sh b/shell/task.sh index 0103d09d..87a70259 100755 --- a/shell/task.sh +++ b/shell/task.sh @@ -98,6 +98,10 @@ run_normal () { import_config_and_check define_program "$p1" combine_all + if [[ $AutoHelpOther == true ]] && [[ $(ls $dir_code) ]]; then + local latest_log=$(ls -r $dir_code | head -1) + . $dir_code/$latest_log + fi [[ $# -eq 1 ]] && random_delay log_time=$(date "+%Y-%m-%d-%H-%M-%S") log_path="$dir_log/$p1/$log_time.log" diff --git a/shell/update.sh b/shell/update.sh index cc95bdf6..48124d4a 100755 --- a/shell/update.sh +++ b/shell/update.sh @@ -281,7 +281,7 @@ rebuild_qinglong() { echo -e "重新编译青龙完成...\n" echo -e "重启青龙...\n" - pm2 restart panel 2>/dev/null || pm2 start $dir_root/build/app.js -n panel + pm2 restart panel || pm2 start npm -n panel -- run panel nginx -s reload echo -e "重启青龙完成...\n" fi