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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?