gpt4 book ai didi

java - 如何在 Amazon EC2 中运行 Jar?

转载 作者:行者123 更新时间:2023-12-02 11:12:18 25 4
gpt4 key购买 nike

我对亚马逊还很陌生。我有一个 Java 文件,可以读取 GB 级的爬网数据,并且我正在使用 AWS ToolKit for Eclipse 运行该文件。这里的缺点是,如果我需要读取整个爬行数据,我必须让我的机器运行数周,而这是不可能的。除此之外,我无法将 GB 的数据下载到本地 PC(因为它正在读取数据)。

有什么方法可以让我将 Jar 上传到亚马逊,然后亚马逊在不与我的计算机交互的情况下运行它?我听说网络爬虫在亚马逊运行了数周,却没有将数据下载到开发人员的机器上,并且几个月来都不让开发人员在不关闭的情况下打开他的机器。

我要求的功能就像 Amazon Elastic Map-Reduce 中的“作业流程”。您上传代码,它会在内部运行它。无论您是否保持“您的”机器处于开启状态,都没有关系。

最佳答案

您可以使用 nohup 运行*nix 的命令

nohup java -jar myjar.jar 2>&1 >> logfile.log &

这将运行您的 jar 文件,将输出 [stderr 和 stdout] 定向到 logfile.log。需要 & 以便它在后台运行,从而释放命令行/shell/

!!编辑!!

值得注意的是,我发现在工作开始后停止它的最简单方法是:

ps -ef | grep java

返回ec2-user 19082 19056 98 18:12 pts/0 00:00:11 java -jar myjar.jar

然后杀死19082

请注意,您可以 tail -f logfile.log 或其他此类衍生物 [less、cat、head] 来查看 jar 的输出。

回答问题/评论

嗨。您可以使用 System.out.println() ,是的,它最终会出现在 logfile.log 中。指示这一点的命令是 2&>1,意思是“将流 2 重定向到流 1”。在 UNIX 中,这意味着将 stderr 重定向/管道到 stdout。然后我们指定>> logfile.log,这意味着“将输出附加到logfile.log”。当 System.out.println() 写入 stdout 时,它最终会出现在 logfile.log 中。

但是,如果您的应用程序设置为使用 Log4j/commons-logging,则使用 LOG.info("statement"); 将最终出现在配置的“log4j.properties”日志中文件。使用此配置,最终出现在 logfile.log 中的语句将是系统生成的语句(错误、Linux 内部系统消息)或显式写入 stdout 的任何内容(即 System.out.println()) 语句;

关于java - 如何在 Amazon EC2 中运行 Jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21314700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com