查看: 83|回复: 0

Node.js 定时任务(node-schedule,pm2,shell脚本)

[复制链接]

3

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-7-4
发表于 2019-8-12 14:29:00 | 显示全部楼层 |阅读模式

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 启动附图

 



来源:https://www.cnblogs.com/qq4535292/p/11339931.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部