java - 当我使用 crontab 调用 Python 脚本时,进程不会终止

标签 java python linux cron

我有一个名为 yarn_monitor.py 的脚本。当我运行它时,程序正确执行,当我使用 ps -u myname 查看正在运行的进程时,一切都很清楚。

但是当我使用 cron 运行 yarn_monitor.py 时:

* * * * * /home/me/projects/yarn_monitor/yarn_monitor.py

我看到有几个进程没有退出。在这里它们重复了两次:

19337 ?        00:00:00 yarn_monitor.py
19338 ?        00:00:03 java
19418 ?        00:00:00 sendmail
19419 ?        00:00:00 postdrop
20043 ?        00:00:00 yarn_monitor.py
20046 ?        00:00:02 java
20199 ?        00:00:00 sendmail
20200 ?        00:00:00 postdrop

最终,当我让 cron 继续运行该作业时,我遇到了 Java GC 内存不足错误。

据我所知,我在我的过程中没有使用任何 Java。这是我的导入:

from __future__ import print_function
import os
import sys
import re
import time
from pysnmp.entity.rfc3413.oneliner import ntforg
from pysnmp.proto import rfc1902

知道会发生什么吗?或者如何在终止先前创建的进程的同时继续运行此作业?

最佳答案

It looks like the close isn't working correctly when run through cron, but it works fine when called manually.

在我看来,yarn 需要设置一些环境变量,而这些环境变量在作为 cron 作业运行时并未设置。尝试以下调试:

* * * * * yarn application -list > /home/me/error_log 2>&1 

现在等待 1 分钟,查看 /home/me/error_log,看看它在提示什么。这将提示您需要做什么来修复您的环境。

关于java - 当我使用 crontab 调用 Python 脚本时,进程不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771640/

相关文章:

java - 使用 Java 中的代理从 Azure Blob 获取图像

java - Mybatis - 未映射的继承属性

java - ANTLR4 java解析器可以处理非常大的文件还是可以流式传输文件

regex - 如何用单个空格替换换行符/换行符,但前提是它们在开始/结束正则表达式中?

linux - 使用linux grep命令或任何命令从excel文件中检索列标题

java - 为什么在使用 setLayout() 时无法更改 JFRame 背景的颜色?

python - 获取txt文件中每一行的特定列python

python - CSS 不会从 Django 中的静态文件夹加载,HTTP 状态代码为 200

python - 带有空 except 代码的 Try-except 子句

linux - KSH:限制一次可以运行的线程数