我是亚马逊的新手。我有一个Java文件,它读取爬行数据的GBs,我正在使用AWS ToolKit for Eclipse运行这个文件。这里的缺点是,如果我需要读取所有爬行的数据,我必须让我的机器运行数周,这是不可能的。除此之外,我不能将GBs数据下载到我的本地PC上(因为它正在读取数据)。
有没有办法可以将Jar上传到Amazon,而Amazon不需要使用我的计算机就可以运行它?我听说网络爬虫在亚马逊运行了几个星期,没有将数据下载到开发人员机器中,也没有让开发人员在不关闭几个月的情况下打开机器。
我想要的功能就像亚马逊Elastic中的“作业流”一样--减少。你上传代码,它就会在里面运行。不管你是否打开“你的”机器。
发布于 2014-01-23 17:45:15
可以使用*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
或其他类似的导数,cat,头查看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("statement");
将以配置的'log4j.properties‘日志文件结束。使用此配置,将在logfile.log
中结束的唯一语句将是那些系统生成的语句(错误、linux内部系统消息)或任何显式写入stdout (即System.out.println()
)语句的语句;
https://stackoverflow.com/questions/21314700
复制相似问题