Node.js 定時任務(node-schedule,pm2,shell腳本)


1.背景: 公司的項目經常有小的改動,  因為安全以及運營的一些原因, 晚上0點-7點會停服, 於是有了個項目, 寫一個自動腳本, 在停服期間,自動執行 更新代碼...

2.環境及依賴: 

  centos7, node, child_process, node-schedule, pm2, shell腳本執行

3.以下為簡單的實現demo:

  3.1 定時任務邏輯代碼  (每分鍾第 20s 執行 /home/wwwroot/code/node.sh )

const { exec } = require('child_process');
const shellOrder = 'sh /home/wwwroot/code/node.sh';
const schedule = require('node-schedule')
schedule.scheduleJob('20 * * * * *', () => {
  exec(shellOrder, (err, stdout, stderr) => {
    if(err) {
      console.log('err: ', err)
    }
  })
})

 

  3.2  node.sh   

  前面為啟動依賴, 后面為執行文件 (注意全部都要絕對路徑)

/root/.nvm/versions/node/v10.15.3/bin/node /home/wwwroot/code/nodesh.js

 

  3.3 node執行腳本 (以 fs 模塊寫入一個文件為例子)

const fs = require('fs')
const data = `create by shell script at: ${new Date().getTime()}`

fs.writeFile(`${__dirname}/fs/${new Date().getTime()}.js`, data, e=> {
  if(e) throw e
  console.log('the file has been saved!')
})

  3.4 pm2 守護進程啟動

1    npm i pm2 -g          // 筆者是全局安裝pm2
2    pm2 start node-schedule.js    

 

4. pm2 啟動附圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM