【问题标题】:Cron Jobs Fail to Trigger Node.js Script on External ServerCron 作业无法在外部服务器上触发 Node.js 脚本
【发布时间】:2021-06-27 03:49:04
【问题描述】:

我在 Windows 服务器上有一个 node.js 应用程序,并在外部 CENTOS 服务器上通过 cPanel 设置了一系列 cron 作业。 cron 作业都使用 wget 定位我的 node.js 应用程序的 URL。我确认作业正在根据 WHM 中的 cron 日志运行,但它们并没有导致其他服务器上的脚本正常运行。

cron作业的格式如下:

wget -q -O - "http://example.com/app?&param=1&param=2" >/dev/null 2>&1

cron 作业的结果应该是在另一台服务器上执行脚本。该脚本使用 Puppeteer 抓取网页、截取屏幕截图、将结果解析为 RSS 提要,并在文件系统上创建 rss 格式的 XML 文件。尽管 cron 作业触发并定位了正确的 URL,但我还没有看到单个 cron 作业导致创建新图像或 xml 文件。

这让我想知道在 cPanel、cron 工作和javascript 方面是否有什么我不知道的。我在想也许他们不会使用指向javascript 文件的 URL,但如果这是真的,那么在通过 SSH 执行相同的命令时我不会遇到同样的问题吗?我刚刚使用 WHM 终端尝试了一个,它触发了预期的结果。

【问题讨论】:

  • 它似乎与您的节点应用程序和 cron 作业运行器无关。确保通过登录控制台触发您的节点应用程序。每当您执行文件操作时,请确保运行您的节点应用程序的用户有权在您指定的位置进行写入和读取。我的猜测是您的问题与权限有关。
  • “通过登录控制台触发”是什么意思?节点应用程序始终像网站一样在 IIS 上运行。只要接收到具有正确参数的 URL,就会触发截屏和写入文件的功能。用于创建文件的用户帐户始终属于具有足够权限的 IIS 应用程序池或 IIS 用户。无论get请求来自哪里,用户都是一样的。
  • 更正一下,每当你的nodejs应用被corn job触发时,在nodejs应用的endpoint开头的console中登录,看看是否有web访问或者文件系统操作问题.

标签: javascript node.js cron cpanel


【解决方案1】:

我认为问题是由于 IIS 服务器上的防火墙造成的。我将远程 IP 地址添加到白名单中,现在 cron 作业可以工作了。

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2018-10-15
    • 2022-12-09
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2012-06-07
    相关资源
    最近更新 更多