服务器定时执行js脚本
前段时间买了一个腾讯云的linux(centos)服务器,打算在服务器上放一个js脚本,每天定时执行一次。
之前想过要写一个html,把js的脚本直接写进去,但是发现linux服务器并不能以打开网页的当时执行脚本(查了一些资料,发现一般都是在服务器上部署静态页面,还是需要我手动去访问,不能自动执行)。
后来发现可以使用node执行纯js脚本,不需要写在html里边,这样一来,只要在服务器上设定好每天自动执行node指令就可以了。
实操:
- 安装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指令
- 脚本
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("脚本开始")
- 服务器定时
编辑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的方式。
- 到此,服务器已经可以定时执行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脚本相关推荐
- linux定时任务打印日志,Centos7(linux)使用crond服务定时执行js脚本并将脚本的输出内容记录日志文件的简单应用...
- ## 在Centos7.8上使用crond服务定时执行js脚本并将脚本执行的输出记录日志 1. 安装wget 2. wget https://npm.taobao.org/mirrors/node ...
- 云服务器定时执行python脚本
文章目录 前言 crontab简介 基本语法 定时任务具体内容 python 脚本定时任务 前言 在服务器上定时执行任务有两种方式,一种是at定时任务,一种是crond任务调度,at命令是一次性定时计 ...
- 【计算机系统】如何在阿里云ECS服务器上定时执行Python脚本?
如何在阿里云ECS服务器上定时执行Python脚本? 喜欢的话请给个关注或者点个赞再走吧,你们的支持是我创作的动力! 拓展链接:ES6精讲教程,一文看懂! 基于SpringBoot天猫商城整站 思路: ...
- linux监控php脚本执行时间,在LINUX环境下定时执行php脚本
1. 使用Crontab定时执行linux环境下的php脚本文件 Cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 c ...
- ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件
什么是Cron和Crontab Unix和Linux系统的各个发行版本基本都支持Cron,Cron /Crontab允许我们在设定的时间自动执行或定时执行某个任务,如应用程序或脚本.更详细的概念和使用 ...
- mongo shell连接到mongoDB及shell提示符下执行js脚本
同mysql数据库类似,mongoDB也可通过mongo客户端连接到mongod服务器来进行绝大多数日常管理.这个命令行工具就是mongo,在mysql中则是mysql.通过mongo命令可以连接到本 ...
- centos运行python程序_CentOS 7定时执行python脚本
在CentOS下,可以使用crontab进行定时任务的处理. 一.crontab的安装 默认情况下,CentOS 7中已经安装有crontab,如果没有安装,可以通过yum进行安装. yum inst ...
- linux定时python,linux 中定时执行python脚本
一.让Python随Linux开机自动运行 准备好要自启的脚本auto.py 用root权限编辑以下文件 sudo vim /ect/rc.local 在exit 0上面编辑启动脚本的命令(编辑rc. ...
- centos定时运行python_CentOS中实现定时执行python脚本的方法
CentOS中实现定时执行python脚本的方法 发布时间:2020-06-26 12:44:38 来源:亿速云 阅读:137 本篇文章给大家分享的是有关CentOS中实现定时执行python脚本的方 ...
最新文章
- Visual C#中的(ListBox)数据绑定
- php 运行环境 去mysql,php、MySql运行环境
- SecureCRT Application 已停止工作
- IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架
- 朗读评价语言集锦_表扬朗读好的评语简短
- 片段中未调用onActivityResult
- Redis实战(11)高级特性(3)持久化
- linux上安装openssl的步骤
- ES6新特性之 promise
- 【路径规划】基于matlab遗传算法公交排班系统分析【含Matlab源码 220期】
- 【C语言】实现简易计算器
- 网络远程控制原理及技术实现
- 出租车计价:某城市普通出租车收费标准如下:起步里程为3公里,起步费10元:超过起步里程后10公里内即每公里2元;
- 计算机电源负载能力差,电脑电源问题:电脑电源负载能力差的原因及解决方法...
- 80老翁谈人生(173):老翁力挺转基因,问责“反转派”
- C语言欧界,移动5G套餐出炉了!200GB流量+1000分钟语音,网友:又是套路
- 给研一同学们的深度学习学习规划
- java visualvm下载_VisualVM(java调优工具)
- 腾讯云域名绑定Github Pages(搭配hexo)
- 吃一堑长一智!java基础自学多长时间