feat: add cron cleanup and worker-check scripts
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { existsSync, readFileSync, writeFileSync } from 'fs'
|
||||
import { spawn } from 'child_process'
|
||||
import path from 'path'
|
||||
|
||||
const PID_FILE = path.join(__dirname, 'worker.pid')
|
||||
|
||||
function isRunning(pid: number): boolean {
|
||||
try {
|
||||
process.kill(pid, 0)
|
||||
return true
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
if (existsSync(PID_FILE)) {
|
||||
const pid = parseInt(readFileSync(PID_FILE, 'utf-8').trim(), 10)
|
||||
if (!isNaN(pid) && isRunning(pid)) {
|
||||
console.log(`[cron-check] worker already running (PID ${pid})`)
|
||||
process.exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
const child = spawn(
|
||||
'node',
|
||||
[
|
||||
'-r', 'ts-node/register',
|
||||
'-r', 'tsconfig-paths/register',
|
||||
path.join(__dirname, 'index.ts'),
|
||||
],
|
||||
{ detached: true, stdio: 'ignore' }
|
||||
)
|
||||
child.unref()
|
||||
|
||||
if (child.pid) {
|
||||
writeFileSync(PID_FILE, String(child.pid))
|
||||
console.log(`[cron-check] worker started (PID ${child.pid})`)
|
||||
}
|
||||
|
||||
process.exit(0)
|
||||
Reference in New Issue
Block a user