`
wangxc
  • 浏览: 212216 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux 通过脚本执行java程序

阅读更多
最近在linux上定时执行脚本程序的要求越来越多了,今天的任务是:在linux服务器上编一个脚本,并定时执行该脚本(脚本的目的执行一个java程序,要求java程序要打成jar包)。

1.编写java程序(公司要求我要读取一个txt文件,并将txt文件的不同的ip做一个统计在存放到一个新的txt文件中)
package com.easymorse;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;

public class Test1 {

	/**
	 * author jordy
	 */
	public static void main(String[] args) {

		
		HashSet set = new HashSet();
		HashSet set1 = new HashSet();
		String temp = "";
		boolean tf;
		try {
			                              //要读取的txt文件
			FileReader fr = new FileReader("WebRoot\\resource\\welcomelog.txt");  
			BufferedReader in  =   new  BufferedReader(fr);
			
			String line;
			while ((line = in.readLine()) != null){
				temp = line.substring(0, 14);
				tf = set.add(temp);

				if(tf){
					int firstleft = line.indexOf('(');
					int firstright = line.indexOf(')')+1;
					String othercontent = line.substring(firstleft, firstright);
					String allcontent = temp + "   -*-*-*-*-*-*-*-*-  " + othercontent + "\n";
					set1.add(allcontent);
				}
				
			}
			
		    set = null;
			Iterator it = set1.iterator();
			while(it.hasNext()){
				String content = (String)it.next();
				//新文件保存的路径
				write("D:\\123.txt",content);
			}
			
			
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
		
		
		
		
	}

	
	public static void write(String path,String content){
		String s = new String();
		String s1 = new String();
		
		try{
			File f = new File(path);
			if(f.exists()){
				System.out.println("文件存在");
			}else{
				System.out.println("文件不存在,正在创建...");
				if(f.createNewFile()){
					System.out.println("文件创建创建成功");
				}else{
					System.out.println("文件创建创建失败");
				}
			}
			
			BufferedReader input = new BufferedReader(new FileReader(f));
			while((s = input.readLine()) != null){
				s1 += s + "\n";
			}
			
			System.out.println("文件以前的内容:" + s1);
			input.close();
			
			s1 += content;
			BufferedWriter output = new BufferedWriter(new FileWriter(f));
			output.write(s1);
			output.close();
			
			
		}catch(Exception e){
			e.printStackTrace();
			
		}
		
		
	}
	
	
}


由于要统计不同的IP,代码中应用了HashSet来存放IP地址。

上述java程序是在windows下编写的,如果在linux服务器上运行,只需要把上面文件的路径和文件更换了就可以了。

2.编写好java程序后,将java程序打成jar文件(环境linux)

我将上述测试好的java类上传到了linux服务器上,考虑到服务器的路径与windows下的路径不同所以我在服务器上将上述代码更改为服务器上的代码了。

(1) 修改文件路径
sudo vim Test1.java


  (2) 生成.class文件

javac Test1.java


  (3) 创建一个.mf文件,并编辑该文件
sudo touch Test1.mf


sudo vim Test1.mf


Test1.mf文件内容如图:



(4) 打.jar包

  
jar cfm test1.jar Test1.mf *.class


    执行完上述命令,文件夹中会多一个test1.jar文件

java -jar test1.jar


    测试你的jar是否成功,如果成功会有一个123.txt文档。

(5) 编写一个linux脚本执行第四步命令(写此脚本的目的是方便以后linux可以定时执行脚本)

    新建一个.sh文件
   
sudo touch test.sh


    编辑该test.sh文件  文件内容如图:

    

    
sudo chmod 777 test.sh

    
./test.sh


   上面就把linux执行java程序介绍完了,关于如何执行脚本可以参考我的另一篇博客http://jordy.easymorse.com/?p=59 本文用的的文件可以在附件中下载其中welcomelog.txt为原始文件,123.txt为程序生成文件。
  • 大小: 7.2 KB
  • 大小: 6.1 KB
1
1
分享到:
评论
4 楼 fenglongcen 2016-03-28  
java可以写测试脚本吗?
3 楼 energykey 2012-12-07  

yhjhoo 写道
好像没有一个外部的jar包,请教以下如何在linux设置classpath,可以像在windows下一样简单吗? 我试过,貌似不行,最后只有一个笨方法就是把一个个jar写进shell里面,让后执行,太麻烦了。


能不能直接加一个目录进去阿,还望赐教一下

#!/bin/sh
java -Djava.ext.dirs=lib -Djava.library.path=lib com.xiongmaoke.spider.Application $*


除了classes文件夹外,新建一个lib文件夹,把jar全放到lib下即可,把
com.xiongmaoke.spider.Application 改成你自己的入口类。
2 楼 wangxc 2010-06-08  
回复1楼,“好像没有一个外部的jar包”这句话不太明白你要表达什么意思,linux设置classpath与windows一样只有你的路径设置正确就可以了,我只写了操作一个jar文件的shell脚本,还没有写过一个脚本执行多个的jar包呢,不过我感觉你最后提到的想法应该是可以的,知道你的脚本编写正确,然脚本执行jar文件的顺序正确,就没什么问题了。

    我不是太明白你要加载很多jar的原因是什么?是你的程序要加入这些第三方jar包,还是想一个shell脚本同时执行多个脚本? 谢谢!

     希望您能表达的清楚一些,如果内容比较多,或者需要发送代码或者图片,也可以发到我的邮箱里。
1 楼 yhjhoo 2010-06-06  
好像没有一个外部的jar包,请教以下如何在linux设置classpath,可以像在windows下一样简单吗? 我试过,貌似不行,最后只有一个笨方法就是把一个个jar写进shell里面,让后执行,太麻烦了。


能不能直接加一个目录进去阿,还望赐教一下

相关推荐

    shell,bat脚本运行java程序

    下面将详细介绍如何使用shell脚本(适用于Unix/Linux系统)和bat脚本(适用于Windows系统)来运行Java程序。 **shell脚本运行Java程序** 在Unix/Linux环境中,我们可以创建一个.sh文件作为shell脚本来执行Java程序...

    linux下运行java程序

    在Linux环境下运行Java程序是许多开发人员日常工作中的一部分。Linux以其稳定性和安全性成为了服务器平台的首选,而Java作为跨平台的编程语言,其程序在Linux上运行同样具有广泛的应用。这篇博文将深入探讨如何在...

    linux下脚本编译java,定时删除日志

    总的来说,通过Linux脚本和`cron`服务,我们可以有效地自动化Java项目的编译和日志管理,确保系统资源的有效利用和维护。在实际操作中,务必确保对脚本进行充分测试,并谨慎设置定时任务,避免误删重要文件或影响...

    java调用linux命令、脚本工具类.zip

    Java程序调用linux命令、脚本,支持程序在服务器上使用linux命令。工具类为:ProcessUtil,支持单个命令和批量命令执行函数,同时在工具类中添加了getFileLineNumByCmd函数支持通过linux命令获取文件行数的样例。

    Shell脚本通过Java class文件启停Java程序源码(脚本及源码)

    在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件,有很多不方便的地方,一旦代码修改就需要重新编辑打包,其实还有很多其他的方式,这个资源中包含...

    linux下执行java程序的sh脚本下载

    在Linux环境中运行Java应用程序时,经常需要通过shell脚本来启动Java程序。这种方式不仅便于自动化部署和管理,还可以根据需求灵活调整运行参数。本文将详细介绍如何在Linux环境下编写并运行用于执行Java程序的shell...

    利用脚本启动java程序

    标题 "利用脚本启动Java程序" 涉及到的是如何通过编写脚本来自动化执行Java应用程序,这在日常开发和运维工作中非常常见。脚本语言如bash、Windows批处理等可以方便地帮助我们管理和控制Java程序的启动、停止以及...

    linux系统java服务自启动shell脚本及服务cpu内存占用监控脚本

    2. 设置执行权限:赋予脚本执行权限,运行`chmod +x /etc/init.d/myjavaservice`。 3. 添加启动链接:使用`chkconfig --add myjavaservice`命令将其添加到系统服务列表中。 4. 开启自启动:运行`chkconfig ...

    linux 服务 运行java

    linux 服务 运行java 命令,可通过{start|stop|restart|status},查看运行状态。

    shell脚本启动Java程序测试工程

    在IT行业中,shell脚本是Linux或Unix操作系统中的一种强大工具,用于自动化任务执行和系统管理。当涉及到启动Java应用程序时,shell脚本可以提供一个方便、可重复且灵活的方法。下面我们将深入探讨如何使用shell脚本...

    Linux 自动添加JAVA环境脚本

    - 在持续集成(CI)或自动化部署的场景下,这样的脚本非常有用,可以确保每个新部署的环境都具备了运行Java应用的必要条件。 通过理解上述知识点,你可以创建和理解像`javaPathShell.sh`这样的脚本来自动化管理...

    Linux启动脚本

    在Linux环境下,经常需要通过脚本来启动或停止Java应用程序。本文档将详细介绍一个通用的Linux启动脚本,它不仅可以启动Java程序,还能有效地管理进程的生命周期。该脚本由tudaxia.com编写于2011年6月7日,主要功能...

    Linux脚本制作 java web项目安装包

    通常使用Apache Tomcat、Jetty或其他应用服务器来运行Java Web应用。`installPak.txt`中可能包含下载、解压、配置服务器的命令,如`wget ...

    Linux上执行带main方法的java文件

    通常情况下,在开发环境中可以直接通过IDE或其他工具运行Java应用程序;然而,在Linux服务器部署场景中,则需要采取其他方式,即先将Java项目打包成JAR文件,再利用命令行来启动执行。 #### 打包Java项目为JAR文件 ...

    shell脚本运行java程序jar的方法

    shell脚本运行java程序jar的方法 shell脚本运行java程序jar的方法是指使用shell脚本来运行...shell脚本运行java程序jar包的方法需要注意环境变量的问题,并且需要设置正确的环境变量,以便java命令可以正确地执行。

    JAVA操作linux服务器,本文用于启动shell脚本并返回数据,简单易懂,可随时修改

    本主题聚焦于使用Java来操作Linux服务器,特别是通过执行shell脚本来获取服务器的反馈数据。以下将详细阐述这个过程涉及的技术点和步骤。 首先,我们需要理解Java中的SSH(Secure Shell)框架,它允许我们在安全的...

    linux实用脚本show-busy-java-threads

    在Linux系统中,管理和监控Java应用程序是至关重要的任务,尤其是对于那些处理大量并发请求或运行在高负载环境下的服务。本文将深入探讨标题所提及的三个实用脚本:“show-busy-java-threads”、“show-duplicate-...

    java程序产品包模板-内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip

    在Windows系统中,虽然默认的命令解释器是cmd.exe,但该模板提供了与Linux脚本兼容的解决方案,这可能涉及到使用Cygwin或者Windows PowerShell,这两种工具都能执行bash脚本。在Windows脚本中,同样会调用Java命令来...

    Linux下独立执行Java程序.docx

    总结起来,独立在Linux上运行Java程序需要配置`JAVA_HOME`和`CLASSPATH`,管理依赖的jar包,编写脚本进行执行,并可能借助`cron`服务进行定时调度。这个过程需要对Linux命令行工具和Java环境有深入理解,以便有效地...

Global site tag (gtag.js) - Google Analytics