TimLeaf
2019-12-02 18:51
采纳率: 100%
浏览 496

crontab执行node.js和直接执行的结果不一致。

问题描述

使用Node.js的Puppeteer写了一个爬取网站数据的脚本。

并将执行该脚本的命令写入了CentOS的Shell脚本,代码如下:

cd /home/timleaf/WebScrape && /usr/bin/node reins.js &> crontab.log

然后将Shell脚本,写入crontab,定期执行。

Web Scraping

30 6 * * * /home/timleaf/WebScrape/scrape.sh

你期待的结果是什么?实际看到的错误信息又是什么?

可以从log中看到,scrape.sh被执行了。

但,不仅是crontab.log中是空的,保存的爬取数据也一样是空的。

而我单独在终端里执行

cd /home/timleaf/WebScrape && /usr/bin/node reins.js &> crontab.log

时,却是可以得到正常结果的。

这个问题,我应该从哪里排查。烦请各位指教一下。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • weixin_43975295 2019-12-03 09:34
    已采纳

    多半是环境变量的问题吧,应为用crontab计划任务来运行脚本的时候,PATH变量的值和你直接在终端运行时PATH变量的值不同。
    建议在用crontab运行脚本时,脚本开头处加上两行引入环境变量:source /etc/profile source ~/.bash_profile

    已采纳该答案
    打赏 评论
  • dabocaiqq 2019-12-02 22:03
    打赏 评论

相关推荐 更多相似问题