我有一个名为 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/