Python:子流程在crontab中不起作用
extract.py:Python:子流程在crontab中不起作用,python,python-2.7,cron,subprocess,lz4,Python,Python 2.7,Cron,Subprocess,Lz4,extract.py: def extract_lz4(lz4_path): status = subprocess.call(["lz4", "-df", lz4_path], stderr=subprocess.STDOUT) log.info("In Extract fun STATUS : {}".format(status)) if not status: log.info("Extract Successful of {}".format(lz
def extract_lz4(lz4_path):
status = subprocess.call(["lz4", "-df", lz4_path], stderr=subprocess.STDOUT)
log.info("In Extract fun STATUS : {}".format(status))
if not status:
log.info("Extract Successful of {}".format(lz4_path))
return status
else:
log.info("Extract Successful of {}".format(lz4_path))
return status
lz4_file = '<path-to-lz4-file>/ly486imc83e0v9a7-23-telnet-banner-full_ipv4-20180515T040003-zmap-results.csv.lz4'
extract_status = extract_lz4_task(lz4_file)
log.info("extract_status : {}".format(extract_status))
* * * * * python <path-to-file>/main.py
Main.py:
def extract_lz4(lz4_path):
status = subprocess.call(["lz4", "-df", lz4_path], stderr=subprocess.STDOUT)
log.info("In Extract fun STATUS : {}".format(status))
if not status:
log.info("Extract Successful of {}".format(lz4_path))
return status
else:
log.info("Extract Successful of {}".format(lz4_path))
return status
lz4_file = '<path-to-lz4-file>/ly486imc83e0v9a7-23-telnet-banner-full_ipv4-20180515T040003-zmap-results.csv.lz4'
extract_status = extract_lz4_task(lz4_file)
log.info("extract_status : {}".format(extract_status))
* * * * * python <path-to-file>/main.py
lz4_file='/ly486imc83e0v9a7-23-telnet-banner-full_ipv4-20180515T040003-zmap-results.csv.lz4'
提取状态=提取lz4任务(lz4文件)
log.info(“提取状态:{}”。格式(提取状态))
当我通过python/main.py
调用主文件时,它将成功提取。
但当我把它放在crontab中时,它不会提取
crontab-e:
def extract_lz4(lz4_path):
status = subprocess.call(["lz4", "-df", lz4_path], stderr=subprocess.STDOUT)
log.info("In Extract fun STATUS : {}".format(status))
if not status:
log.info("Extract Successful of {}".format(lz4_path))
return status
else:
log.info("Extract Successful of {}".format(lz4_path))
return status
lz4_file = '<path-to-lz4-file>/ly486imc83e0v9a7-23-telnet-banner-full_ipv4-20180515T040003-zmap-results.csv.lz4'
extract_status = extract_lz4_task(lz4_file)
log.info("extract_status : {}".format(extract_status))
* * * * * python <path-to-file>/main.py
***python/main.py
我有什么遗漏吗?任何帮助都将不胜感激请尝试使用以下工具调试您的cron:
tail /var/log/cron
或者添加日志文件
$ crontab -e
* * * * * python <path-to-file>/main.py >> <path-to-file>/cron.log 2>&1
$crontab-e
*****python/main.py>>/cron.log 2>&1
lz4
可能不在路径中?crontab没有设置与您的帐户相同的路径。还要检查lz4_路径
是否正确。此外,检查异常并将其记录在文件中,以便“它不会提取”将变为“我有错误的回溯”提取\u lz4不返回值,因此提取\u状态将为无,现在请查看它是否返回。。。在运行时,cron的输出是什么?如果是路径问题,您可以在cron:(cd;python)子进程中尝试返回0,这不意味着该进程将成功吗?我提供完整的lz4_路径
将其附加到您的crontab条目中:>/tmp/logfile 2>&1cron.log
正在保存csv中的所有数据。这是怎么发生的?这意味着main.py从csv发送数据作为函数输出。main..py
只是用来调用提取函数,那么它如何在提取之前从csv发送数据呢?在深入研究之后,我想这一切都是关于stderr=subprocess.STDOUT
和2>&1
在我们的例子中,它是作为1>&2
工作的,因此,请尝试在不使用cronpython/main.py>/cron.log的情况下从cmd键入。输出与cron相同cron.log
充满了csv数据