From 5c03034bb41301eed052c8ce4f75a59f85988db7 Mon Sep 17 00:00:00 2001 From: whyour Date: Wed, 4 Jan 2023 17:25:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=8D=E4=BB=A5task=E5=BC=80=E5=A4=B4=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BB=BB=E5=8A=A1=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/config/const.ts | 6 ++++++ back/schedule.ts | 8 ++++++-- back/services/cron.ts | 11 +++++++++-- back/services/script.ts | 6 +++--- src/pages/script/editModal.tsx | 2 +- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/back/config/const.ts b/back/config/const.ts index 3c412fd3..46584588 100644 --- a/back/config/const.ts +++ b/back/config/const.ts @@ -1 +1,7 @@ export const LOG_END_SYMBOL = '\n          '; + +export const TASK_COMMAND = 'task'; +export const QL_COMMAND = 'ql'; + +export const TASK_PREFIX = `${TASK_COMMAND} `; +export const QL_PREFIX = `${QL_COMMAND} `; diff --git a/back/schedule.ts b/back/schedule.ts index b8fed4c0..a449215d 100644 --- a/back/schedule.ts +++ b/back/schedule.ts @@ -4,6 +4,7 @@ import { exec } from 'child_process'; import Logger from './loaders/logger'; import { CrontabModel, CrontabStatus } from './data/cron'; import config from './config'; +import { QL_PREFIX, TASK_PREFIX } from './config/const'; const app = express(); @@ -23,8 +24,11 @@ const run = async () => { ) { schedule.scheduleJob(task.schedule, function () { let command = task.command as string; - if (!command.includes('task ') && !command.includes('ql ')) { - command = `task ${command}`; + if ( + !command.startsWith(TASK_PREFIX) && + !command.startsWith(QL_PREFIX) + ) { + command = `${TASK_PREFIX}${command}`; } exec(`ID=${task.id} ${command}`); }); diff --git a/back/services/cron.ts b/back/services/cron.ts index 1940951e..65e2339d 100644 --- a/back/services/cron.ts +++ b/back/services/cron.ts @@ -14,6 +14,7 @@ import { import { promises, existsSync } from 'fs'; import { Op, where, col as colFn } from 'sequelize'; import path from 'path'; +import { TASK_PREFIX, QL_PREFIX } from '../config/const'; @Service() export default class CronService { @@ -361,8 +362,8 @@ export default class CronService { this.logger.silly('Original command: ' + command); let cmdStr = command; - if (!cmdStr.includes('task ') && !cmdStr.includes('ql ')) { - cmdStr = `task ${cmdStr}`; + if (!cmdStr.startsWith(TASK_PREFIX) && !cmdStr.startsWith(QL_PREFIX)) { + cmdStr = `${TASK_PREFIX}${cmdStr}`; } if ( cmdStr.endsWith('.js') || @@ -519,6 +520,12 @@ export default class CronService { } private make_command(tab: Crontab) { + if ( + !tab.command.startsWith(TASK_PREFIX) && + !tab.command.startsWith(QL_PREFIX) + ) { + tab.command = `${TASK_PREFIX}${tab.command}`; + } const crontab_job_string = `ID=${tab.id} ${tab.command}`; return crontab_job_string; } diff --git a/back/services/script.ts b/back/services/script.ts index 295a2fac..a7aa1e07 100644 --- a/back/services/script.ts +++ b/back/services/script.ts @@ -6,7 +6,7 @@ import SockService from './sock'; import CronService from './cron'; import ScheduleService, { TaskCallbacks } from './schedule'; import config from '../config'; -import { LOG_END_SYMBOL } from '../config/const'; +import { TASK_COMMAND } from '../config/const'; import { getPid, killTask } from '../config/util'; @Service() @@ -42,7 +42,7 @@ export default class ScriptService { public async runScript(filePath: string) { const relativePath = path.relative(config.scriptPath, filePath); - const command = `task -l ${relativePath} now`; + const command = `${TASK_COMMAND} -l ${relativePath} now`; const pid = await this.scheduleService.runTask( command, this.taskCallbacks(filePath), @@ -56,7 +56,7 @@ export default class ScriptService { let str = ''; if (!pid) { const relativePath = path.relative(config.scriptPath, filePath); - pid = await getPid(`task -l ${relativePath} now`); + pid = await getPid(`${TASK_COMMAND} -l ${relativePath} now`); } try { await killTask(pid); diff --git a/src/pages/script/editModal.tsx b/src/pages/script/editModal.tsx index 89dd6fff..f4bec17d 100644 --- a/src/pages/script/editModal.tsx +++ b/src/pages/script/editModal.tsx @@ -101,7 +101,7 @@ const EditModal = ({ }; const stop = () => { - if (!cNode || !cNode.title) { + if (!cNode || !cNode.title || !currentPid) { return; } request