Cronjob和Ubuntu 22.04上的日志NodeJS项目



我有一个Typescript项目,使用morganmorgan-daily-rotate进行日志记录。它在1台服务器上执行HTTP请求以获取一些股票信息,并在另一台服务器上更新该股票信息。当它运行时,它会以YYYY-MM-DD模式生成一个文件夹。我正在Windows机器上进行开发,并将其部署到Linode Ubuntu 22.04实例中。

我的项目目录:

build/
...
index.js
logs/
2022-10-04-20/ <- these folders will be generated depending on run date and time
combined.log
error.log
warn.log
src/
...
index.ts
run.sh

该项目放置在~/customerName/projectName/中。在部署期间,Typescript项目被构建,并且只有build文件夹与package.json一起被复制到Linode实例中,用于安装依赖项。

我设置了一个防火墙,允许http和https连接。ufw status给出:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80,443/tcp                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80,443/tcp (v6)            ALLOW       Anywhere (v6)

如果我在开发过程中在Windows机器上运行该项目,它运行得非常好,日志也很好地显示在logs目录中的不同日期目录中。

如果我在~/customerName/projectName/的Ubuntu实例上运行该项目,它也可以像开发一样正常工作。

但是,当我从cronjob启动命令时:

*/5 * * * * cd /home/user/customerName/projectName/ && node index.js > /home/user/customerName/projectName/logs/cron.log 2&>1

即使我告诉cron从项目目录开始,日志最终也会出现在~/logs而不是~/customerName/projectName/logs中。可能是因为它从用户的主目录执行cronjob。此外,日志中填充了包含Error: connect ECONNREFUSED ::1:80的axios错误

摩根运输的一个例子:

const infoTransport: DailyRotateFile = new DailyRotateFile({
level: "info",
filename: "./logs/%DATE%/combined.log",
datePattern: "YYYY-MM-DD-HH",
maxSize: "20m",
maxFiles: "14d",
});

问题:

  1. 如何让cron从~/customerName/projectName/目录执行脚本
  2. 为什么在运行脚本时会得到Error: connect ECONNREFUSED ::1:80,因为用户本身工作正常
  3. 有点离题:我应该如何设置环境变量以在脚本中使用

提前感谢。

我找到了一种正确处理此问题的方法。实际上,我只是在项目目录中创建了与开发过程中使用的.env文件完全相同的文件,并将其设置为BASH_ENV变量。

我的crontab条目:

0 4 * * * BASH_ENV=/home/user/customerName/projectName/.env /home/user/customerName/projectName/run.sh > /home/user/customerName/projectName/logs/cron.log 2&>1

我的run.sh

#!/bin/sh
date
echo Starting customerName stock update on $PROJECTNAME_ENVIRONMENT
cd /home/user/customerName/projectName
/home/user/.nvm/versions/node/v16.17.1/bin/node index.js

相关内容

  • 没有找到相关文章

最新更新