Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
elasticdump从crontab中的bash启动,但不会转储所有记录_Bash_Cron - Fatal编程技术网

elasticdump从crontab中的bash启动,但不会转储所有记录

elasticdump从crontab中的bash启动,但不会转储所有记录,bash,cron,Bash,Cron,我在bash文件中有一个elasticdump命令 #!/bin/bash elasticdump \ --input=url would be here/datalayer \ --output=weownit_data/datalayer_now.json \ --searchBody '{"query": {"filtered": {"query": { "match_all" : {}},"filter": {"bool": {"must": [{"numeric_

我在bash文件中有一个elasticdump命令

#!/bin/bash

elasticdump \
  --input=url would be here/datalayer \
  --output=weownit_data/datalayer_now.json \
  --searchBody '{"query": {"filtered": {"query": {
    "match_all" : {}},"filter": {"bool": {"must": [{"numeric_range": {"timestamp": {"gte": 1434499493}}},{"type" : {"value" : "event2"}}]}}}}}'
如果我单独运行该命令,它将正常工作。如果我自己运行bash文件,它就会正常工作,这两个文件都会下载200000条记录

我的crontab如下所示

0 2 * * * /home/woibasic/projects/all_since_jun172015.bash > /home/woibasic/projects/logging/elasticsearch.log
Fri, 26 Jun 2015 02:00:02 GMT | starting dump
Fri, 26 Jun 2015 02:00:02 GMT | got 100 objects from source elasticsearch (offset: 0)
当我查看elasticsearch.log时,它显示了以下内容

0 2 * * * /home/woibasic/projects/all_since_jun172015.bash > /home/woibasic/projects/logging/elasticsearch.log
Fri, 26 Jun 2015 02:00:02 GMT | starting dump
Fri, 26 Jun 2015 02:00:02 GMT | got 100 objects from source elasticsearch (offset: 0)

所以问题是,为什么它停止在100个对象上,因为某种原因,cron似乎关闭得太快了

crontab与您测试脚本的用户相同,对吗elasticdump和/或Node.js是否需要一些环境变量才能按预期工作?elasticdump是全局设置的,所以我认为这不对,应该是同一个用户,但我认为,是的,嗯,这可能是一个权限问题——比如elasticdump是存在的,因为它没有将从elasticsearch获得的对象输出到输出文件的权限。虽然通常我会在输出中看到一条关于这一点的消息。“如果您使用在用户下启动的
crontab-e
编辑crontab,则它是用户的crontab,cron将作为用户运行命令。---关于环境变量,我建议:--1。列出函数环境(脚本工作的地方)中的变量:
export
——2.在空环境下运行shell:
exec-cbash--norc--noprofile
--3.尝试在那里运行脚本。如果不起作用,则从1导出变量。在剧本中4.如果它确实与导出的变量一起工作,那么您可以逐个测试以找到所需的变量。我也有这个问题,您同时发现了什么吗?crontab与您测试脚本的用户是同一个用户,对吗elasticdump和/或Node.js是否需要一些环境变量才能按预期工作?elasticdump是全局设置的,所以我认为这不对,应该是同一个用户,但我认为,是的,嗯,这可能是一个权限问题——比如elasticdump是存在的,因为它没有将从elasticsearch获得的对象输出到输出文件的权限。虽然通常我会在输出中看到一条关于这一点的消息。“如果您使用在用户下启动的
crontab-e
编辑crontab,则它是用户的crontab,cron将作为用户运行命令。---关于环境变量,我建议:--1。列出函数环境(脚本工作的地方)中的变量:
export
——2.在空环境下运行shell:
exec-cbash--norc--noprofile
--3.尝试在那里运行脚本。如果不起作用,则从1导出变量。在剧本中4.如果它与导出的变量一起工作,你可以逐个测试以找到所需的变量。我也有这个问题,你同时发现了什么吗?