nightwatch在cron里跑不起来的原因
用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)来启动程序, 图形将显示在 本地窗口 上。
- 点赞
- 收藏
- 关注作者
评论(0)