#!/usr/bin/env node 'use strict'; // 先于其它模块:摘掉 NOTIFY_SOCKET,避免任意子进程误发 systemd notify require('../lib/systemd-env'); const path = require('path'); const { exec } = require('child_process'); const { ClawClient } = require('../lib/client'); const log = require('../lib/logger'); // 每次启动绑定 Quectel 串口驱动(失败不影响主流程) const bindScript = path.join(__dirname, '..', 'tools', 'bind-quectel-serial.sh'); exec(`bash "${bindScript}"`, (err, stdout, stderr) => { if (err) log.warn('clawd', `bind-quectel-serial: ${stderr || err.message}`); else log.info('clawd', `bind-quectel-serial: ok`); }); const client = new ClawClient(); client.start(); let stopping = false; function shutdown(signal) { if (stopping) return; stopping = true; log.info('clawd', `收到 ${signal},正在停止...`); client.stop(); setTimeout(() => process.exit(0), 500); } process.on('SIGINT', () => shutdown('SIGINT')); process.on('SIGTERM', () => shutdown('SIGTERM'));