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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问