前段时间买了一个腾讯云的linux(centos)服务器,打算在服务器上放一个js脚本,每天定时执行一次。

之前想过要写一个html,把js的脚本直接写进去,但是发现linux服务器并不能以打开网页的当时执行脚本(查了一些资料,发现一般都是在服务器上部署静态页面,还是需要我手动去访问,不能自动执行)。
后来发现可以使用node执行纯js脚本,不需要写在html里边,这样一来,只要在服务器上设定好每天自动执行node指令就可以了。

实操:

  1. 安装node,配置环境。
    进入node官网,https://nodejs.org/en/download/

    选择最新版本的,右键-复制链接地址
    https://nodejs.org/dist/v14.15.1/node-v14.15.1-linux-x64.tar.xz
    在命令行中,进入到想要安装node的文件夹(自己新建一个)
cd /usr/local/node  # 我安装的目录
wget https://nodejs.org/dist/v14.15.1/node-v14.15.1-linux-x64.tar.xz # 下载已经编译好的版本,可以省去编译过程
tar -xvJf node-v14.15.1-linux-x64.tar.xz # 解压
cd node-v14.15.1-linux-x64 # 进入解压后的文件
./bin/node -v # 执行node命令 查看版本


解压文件的 bin 目录底下包含了 node、npm 等命令,使用 ln 命令来设置软连接:

ln -s /usr/local/node/node-v14.15.1-linux-x64/bin/npm   /usr/local/bin/
ln -s /usr/local/node/node-v14.15.1-linux-x64/bin/node  /usr/local/bin/

也可直接设置环境变量:在 etc/profile 最下边加上

# nodejs环境变量
export NODE_HOME=/usr/local/node/node-v14.15.1-linux-x64
export PATH=$NODE_HOME/bin:$PATH

这样,在任何路径下,都可以直接使用node指令

  1. 脚本
    js脚本原本是在写在html里边的,如果想用node执行,需要有所修改。

首先,由于脚本中需要使用jquery中的$,需要引入jsdom,jquery

# 进入js脚本所在目录
cd usr/script # 我的脚本路径
npm install jquery # 安装jquery
npm install jsdom # 安装jsdom

之后,编辑脚本

vim fangyi.js
    //在脚本最开始加上const jsdom = require('jsdom');const {JSDOM} = jsdom;const {document} = (new JSDOM('<!doctype html><html><body></body></html>')).window;global.document = document;const window = document.defaultView;const $ = require('jquery')(window);

此外,由于想要脚本自动执行,通过console.log()打印的控制台显然不太合理,因此考虑将脚本执行的信息打印到日志文件中,方法很简单

在脚本最开始加上:

     const fs = require('fs');const options = {flags: 'a',     // append模式encoding: 'utf8',  // utf8编码};let file = fs.createWriteStream('/usr/script/dailyLog.txt',options);      // 创建logger,用于输出到log文件let logger = new console.Console(file,file);//使用方法,即可写入到日志文件中logger.log("脚本开始")
  1. 服务器定时
    编辑crontab,可以编辑定时任务
crontab -l # 查看任务列表
crontab -e # 编辑任务
# 加入一个新任务(每天10点10分执行一次js脚本)
10 10 * * * /usr/local/node/node-v14.15.1-linux-x64/bin/node /usr/script/fangyi.js

具体crontab的格式,自行查找即可。

注:
编辑crontab时,一般的直觉是直接使用 node+脚本 就行,但是因为crontab有自己的环境,与前边配置的系统环境变量不同,所以如果想要在crontab中直接使用node指令,需要在/etc/crontab中加入node的安装路径。
但是我在实际操作时,在/etc/crontab加入了node路径,但是却执行不了,所以简单粗暴直接写的是node路径。出现这个问题可能是哪里写的不对,大家可以试试修改/etc/crontab的方式。

  1. 到此,服务器已经可以定时执行js脚本了,可以在对应的输出日志文件中查看执行结果。

参考:

  • node安装:https://www.runoob.com/nodejs/nodejs-install-setup.html

  • node环境使用jquery:https://www.itread01.com/content/1542875725.html

  • nodejs日志打印:https://www.jb51.net/article/138984.htm

  • crontab环境变量:https://blog.csdn.net/weixin_36343850/article/details/79217611

服务器定时执行js脚本相关推荐

  1. linux定时任务打印日志,Centos7(linux)使用crond服务定时执行js脚本并将脚本的输出内容记录日志文件的简单应用...

    - ## 在Centos7.8上使用crond服务定时执行js脚本并将脚本执行的输出记录日志 1. 安装wget 2. wget https://npm.taobao.org/mirrors/node ...

  2. 云服务器定时执行python脚本

    文章目录 前言 crontab简介 基本语法 定时任务具体内容 python 脚本定时任务 前言 在服务器上定时执行任务有两种方式,一种是at定时任务,一种是crond任务调度,at命令是一次性定时计 ...

  3. 【计算机系统】如何在阿里云ECS服务器上定时执行Python脚本?

    如何在阿里云ECS服务器上定时执行Python脚本? 喜欢的话请给个关注或者点个赞再走吧,你们的支持是我创作的动力! 拓展链接:ES6精讲教程,一文看懂! 基于SpringBoot天猫商城整站 思路: ...

  4. linux监控php脚本执行时间,在LINUX环境下定时执行php脚本

    1. 使用Crontab定时执行linux环境下的php脚本文件 Cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 c ...

  5. ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件

    什么是Cron和Crontab Unix和Linux系统的各个发行版本基本都支持Cron,Cron /Crontab允许我们在设定的时间自动执行或定时执行某个任务,如应用程序或脚本.更详细的概念和使用 ...

  6. mongo shell连接到mongoDB及shell提示符下执行js脚本

    同mysql数据库类似,mongoDB也可通过mongo客户端连接到mongod服务器来进行绝大多数日常管理.这个命令行工具就是mongo,在mysql中则是mysql.通过mongo命令可以连接到本 ...

  7. centos运行python程序_CentOS 7定时执行python脚本

    在CentOS下,可以使用crontab进行定时任务的处理. 一.crontab的安装 默认情况下,CentOS 7中已经安装有crontab,如果没有安装,可以通过yum进行安装. yum inst ...

  8. linux定时python,linux 中定时执行python脚本

    一.让Python随Linux开机自动运行 准备好要自启的脚本auto.py 用root权限编辑以下文件 sudo vim /ect/rc.local 在exit 0上面编辑启动脚本的命令(编辑rc. ...

  9. centos定时运行python_CentOS中实现定时执行python脚本的方法

    CentOS中实现定时执行python脚本的方法 发布时间:2020-06-26 12:44:38 来源:亿速云 阅读:137 本篇文章给大家分享的是有关CentOS中实现定时执行python脚本的方 ...

最新文章

  1. Visual C#中的(ListBox)数据绑定
  2. php 运行环境 去mysql,php、MySql运行环境
  3. SecureCRT Application 已停止工作
  4. IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架
  5. 朗读评价语言集锦_表扬朗读好的评语简短
  6. 片段中未调用onActivityResult
  7. Redis实战(11)高级特性(3)持久化
  8. linux上安装openssl的步骤
  9. ES6新特性之 promise
  10. 【路径规划】基于matlab遗传算法公交排班系统分析【含Matlab源码 220期】
  11. 【C语言】实现简易计算器
  12. 网络远程控制原理及技术实现
  13. 出租车计价:某城市普通出租车收费标准如下:起步里程为3公里,起步费10元:超过起步里程后10公里内即每公里2元;
  14. 计算机电源负载能力差,电脑电源问题:电脑电源负载能力差的原因及解决方法...
  15. 80老翁谈人生(173):老翁力挺转基因,问责“反转派”
  16. C语言欧界,移动5G套餐出炉了!200GB流量+1000分钟语音,网友:又是套路
  17. 给研一同学们的深度学习学习规划
  18. java visualvm下载_VisualVM(java调优工具)
  19. 腾讯云域名绑定Github Pages(搭配hexo)
  20. 吃一堑长一智!java基础自学多长时间

热门文章

  1. 智能冰箱APP开发定制制作
  2. R语言--计算各种距离
  3. Python包 - networkx
  4. ABB机器人基本知识。
  5. Linux 安装docker教程
  6. 彻底解决WPS Office Expansion tool弹出问题!
  7. PINCTRL子系统
  8. Goddy服务器配置
  9. CSDN 为什么无法上传付费资源?
  10. 数学美 之 判断线段相交的最简方法