Java 如何在AmazonEC2中运行Jar?
我对亚马逊是相当陌生的。我有一个Java文件,它读取GBs的爬网数据,我正在使用AWS Eclipse工具包运行它。这里的缺点是,如果我需要读取整个爬网数据,我必须让我的机器运行数周,而这是不可能的。除此之外,我无法将GBs的数据下载到本地PC(因为它正在读取数据) 有没有什么方法可以让我把Jar上传到亚马逊,让亚马逊在不使用我的电脑的情况下运行它?我听说亚马逊的网络爬虫已经运行了好几个星期,没有将数据下载到开发者的机器上,也没有让开发者打开他的机器而不关闭几个月 我要问的功能就像亚马逊弹性地图中的“工作流程”。你上传代码,它在里面运行。不管您是否打开“您的”计算机。您可以使用*nix命令运行Java 如何在AmazonEC2中运行Jar?,java,eclipse,amazon-web-services,amazon-ec2,cloud,Java,Eclipse,Amazon Web Services,Amazon Ec2,Cloud,我对亚马逊是相当陌生的。我有一个Java文件,它读取GBs的爬网数据,我正在使用AWS Eclipse工具包运行它。这里的缺点是,如果我需要读取整个爬网数据,我必须让我的机器运行数周,而这是不可能的。除此之外,我无法将GBs的数据下载到本地PC(因为它正在读取数据) 有没有什么方法可以让我把Jar上传到亚马逊,让亚马逊在不使用我的电脑的情况下运行它?我听说亚马逊的网络爬虫已经运行了好几个星期,没有将数据下载到开发者的机器上,也没有让开发者打开他的机器而不关闭几个月 我要问的功能就像亚马逊弹性地图
nohup java -jar myjar.jar 2>&1 >> logfile.log &
这将运行jar文件,将输出[stderr和stdout]定向到logfile.log
。需要&
,以便它在后台运行,从而释放命令行/shell/
!!编辑
值得注意的是,我找到的在工作开始后停止工作的最简单方法是:
ps-ef | grep java
返回ec2用户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日志记录,则使用
LOG.info(“语句”)代码>将在配置的“log4j.properties”日志文件中结束。使用此配置,只有系统生成的语句(错误、linux内部系统消息)或明确写入stdout(即System.out.println()
)语句才会出现在logfile.log
中 是的,你可以上传并运行它。这已经[讨论过][1][2]:[1]:[2]:@crnlx:没有。你必须在你的机器中保持控制台打开,你可以cron它,不是吗?@crnlx:cron它的意思是?我的意思是,你不能将它添加到crontab吗?请查看我上面发布的第一个问题的顶部答案的链接。您好,代码如何知道需要将内容放入日志文件?对于Java,System.out.println()
写入日志文件?