[英]How to run a Jar in Amazon EC2?
我是亚马逊的新手。 我有一个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
然后kill 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()
)语句的语句;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.