T06 · System Persistence
- Location
setup.js:69- Finding
Setup Automatically Installs Persistent Scheduled Jobs
- Content
View full analysis
> /tmp/secondmind-ingest.log 2>&1`, `15 */6 * * * cd ${base} && ${nodePath} scripts/consolidate.js >> /tmp/secondmind-consolidate.log 2>&1`, `0 3 * * * cd ${base} && ${nodePath} scripts/archive.js >> /tmp/secondmind-archive.log 2>&1`, `45 */6 * * * cd ${base} && ${nodePath} scripts/initiative.js >> /tmp/secondmind-initiative.log 2>&1`, ]; try { let ex=''; try{ex=execSync('crontab -l 2>/dev/null',{encoding:'utf8'})}catch{} const filtered=ex.split('\n').filter(l=>!l.includes('secondmind-')&&!l.includes('secondmind')).filter(l=>l.trim()).join('\n'); const nc=filtered+'\n\n# ── SecondMind ──\n'+crons.join('\n')+'\n'; fs.writeFileSync('/tmp/secondmind-crontab',nc); execSync('crontab /tmp/secondmind-crontab'); fs.unlinkSync('/tmp/secondmind-crontab'); console.log(` ✅ ${crons.length} cron jobs installed`); } catch(e) { console.error(' ❌',e.message); } } function setupWin(scripts) { const node=process.execPath; [{name:'Eigen-Ingest',s:'ingest.js',m:30},{name:'Eigen-Consolidate',s:'consolidate.js',m:360},{name:'Eigen-Archive',s:'archive.js',d:'03:00'},{name:'Eigen-Initiative',s:'initiative.js',m:360}].forEach(t=>{ const cmd=`"${node}" "${path.join(scripts,t.s)}"`; try{execSync(`schtasks /Delete /TN "${t.name}" /F 2>nul`,{stdio:'ignore'})}catch{} try{ if(t.d) execSync(`schtasks /Create /TN "${t.name}" /TR ${cmd} /SC DAILY /ST ${t.d} /F`); else execSync(`schtasks /Create /TN "${t.name}" /TR ${cmd} /SC MINUTE /MO ${t.m} /F`); console.log(` ✅ ${t.name}`); }cat ...[truncated 1927 chars]- Remediation
View remediation
