diff --git a/back/data/cron.ts b/back/data/cron.ts index 56f0ec81..d6f829cf 100644 --- a/back/data/cron.ts +++ b/back/data/cron.ts @@ -49,12 +49,18 @@ export enum CrontabStatus { interface CronInstance extends Model, Crontab {} export const CrontabModel = sequelize.define('Crontab', { - name: DataTypes.STRING, - command: { - unique: 'command', + name: { + unique: 'compositeIndex', + type: DataTypes.STRING, + }, + command: { + unique: 'compositeIndex', + type: DataTypes.STRING, + }, + schedule: { + unique: 'compositeIndex', type: DataTypes.STRING, }, - schedule: DataTypes.STRING, timestamp: DataTypes.STRING, saved: DataTypes.BOOLEAN, status: DataTypes.NUMBER, diff --git a/back/services/cron.ts b/back/services/cron.ts index aaa91b73..fa4f445b 100644 --- a/back/services/cron.ts +++ b/back/services/cron.ts @@ -5,7 +5,7 @@ import { Crontab, CrontabModel, CrontabStatus } from '../data/cron'; import { exec, execSync, spawn } from 'child_process'; import fs from 'fs'; import cron_parser from 'cron-parser'; -import { getFileContentByName, concurrentRun } from '../config/util'; +import { getFileContentByName, concurrentRun, fileExist } from '../config/util'; import { promises, existsSync } from 'fs'; import { promisify } from 'util'; import { Op } from 'sequelize'; @@ -194,7 +194,8 @@ export default class CronService { } } const err = await this.killTask(doc.command); - if (doc.log_path) { + const logFileExist = await fileExist(doc.log_path); + if (doc.log_path && logFileExist) { const str = err ? `\n${err}` : ''; fs.appendFileSync( `${doc.log_path}`,