nightwatch在cron里跑不起来的原因

黄生 发表于 2021/12/24 20:35:37 2021/12/24
【摘要】 用nightwatch写了一个作业,手工调用是正常的,现在想把这个作业给定时的调用,那好,写一个cron任务好了写cron任务有一些要注意的地方,其他的就不多说了,就说一个,为了出现问题时排查的方便,要记录log> xxlog 2> &1 这个放在任务命令的最后,当运行的结果和预期不一致时,就去看这个xxlog来找原因。好,来看一下nightwatch能不能跑起来,不能跑起来,看xxlog,...

用nightwatch写了一个作业,手工调用是正常的,

现在想把这个作业给定时的调用,那好,写一个cron任务好了

写cron任务有一些要注意的地方,其他的就不多说了,就说一个,为了出现问题时排查的方便,要记录log

> xxlog 2> &1 这个放在任务命令的最后,当运行的结果和预期不一致时,就去看这个xxlog来找原因。

好,来看一下nightwatch能不能跑起来,不能跑起来,看xxlog, 当然是有报错了:

简直莫名其妙,莫不赵头脑。分析一下,这个报错说明node模块nightwatch是运行起来了,只是运行过程中报错了

其实这时候不必要从外部去找原因,而是要向内部去找寻。

看看作业自己目录下,运行生成的日志,geckodriver.log是这样的:


原因就一目了然了,

在任务脚本里加上这么一句:


export DISPLAY=:0

问题就解决拉~任务成功吊起来了。

前面说道日志的重定向,有这个写法:> xxlog 2> &1

这个是什么意思,要怎么看呢?

stdin (the keyboard), stdout (the screen), and stderr (error messages output to the screen) 分别是:

标准输入、标准输出、标准错误输出,他们的文件描述符分别是:

0、1、2

而用在重定向>的时候,1是可以省略的。所以 > xxlog 2> &1

就明白了:输出全定向到xxlog里,包含标准输出和错误输出

附上关于DISPLAY的概念解释:

在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:

0:0

, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在 本地窗口 上。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。