最近在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
分享到:
相关推荐
Java程序调用linux命令、脚本,支持程序在服务器上使用linux命令。工具类为:ProcessUtil,支持单个命令和批量命令执行函数,同时在工具类中添加了getFileLineNumByCmd函数支持通过linux命令获取文件行数的样例。
在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件,有很多不方便的地方,一旦代码修改就需要重新编辑打包,其实还有很多其他的方式,这个资源中包含...
这篇文章主要介绍了linux下执行java程序的sh脚本,仅供参考,但是设置的时候环境变量是最重要的,我就是环境变量一直不对,总是按网上查到的来,不明白怎么回事,才一直出错,其实环境变量就是你要执行的java程序...
JAVA操作linux服务器,本文用于启动shell脚本并返回数据,简单易懂,可随时修改,1.连接服务器。2.输入服务器地址。3.输入用户名和密码。4.输入要执行的命令。
linux中java项目需要重启一般使用先找到进程杀掉进程,然后找到项目启动,整个过程不算复杂,但是每次都操作一遍太麻烦,我这里把这个过程整理成shell脚本,大家可以修改里面项目名称,每次直接执行这个命令重启项目...
主要介绍了linux下执行java程序的sh脚本,仅供参考,但是设置的时候环境变量是最重要的,我就是环境变量一直不对,总是按网上查到的来,不明白怎么回事,才一直出错,其实环境变量就是你要执行的java程序所在的位置
#该脚本为Linux下启动java程序的通用脚本。
虽然写起动shell的频率非常不高。。。但是每次要写都要对付一大...#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用。 # #Author: tudaxia.
原因是程序放在root用户下,要runtime执行exp的话,root不认exp命令;找了好多资料,最后决定写个shell脚本;没接触过shell脚本,网上大部分例子都写的挺复杂的;贴个简单的,不带传参什么的;只是最简单的数据表的...
java程序通用的产品包模板,启停脚本可以同时兼容普通java工程和springboot工程,如有定制化需求可以自行扩展。
NULL 博文链接:https://qsfwy.iteye.com/blog/1650426
利用Runtime.execute方法,我们可以在Java程序中运行Linux的Shell脚本,或者执行其他程序
ps -ef |grep java|grep
在Java程序中调用Unix/Linux主机上的Shell命令,并返回相应执行结果。
下面的代码放入一个文件:hello.sh,脚本的内容很简单只是用来测试,回显输出“hello <参数1> ” #! /bin/sh echo "hello $1\n"; 然后我把它放到远程主机的/root目录下面,远程主机的IP是1.1.1.1(当然我真实测试...
linux通用版本jar启动脚本傻瓜式启动 sh run.sh start 启动 sh run.sh stop 停止 nohup java -jar XXX.jar & nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
cat /mnt/log_function.sh #!/bin/bash #log function ...echo “${DATE} ${USER} execute $0 [INFO] $@” >>/var/log/log_info.log ######($0脚本本身,$@将参数作为整体传输调用) } log_error打印shell脚本
一般我们在开发的时候经常使用的是前面两种运行方式,在部署实施的时候使用的第三种方式,下面我们就重点说明下载linux环境中运行和停止springboot项目的指令和脚本: 一、指令 nohup 不挂断运行指令 一般在linux...
这是Linux环境下一键启动/停止多个Java程序jar包的文件,执行命令为./java.sh start