javashell脚本怎么写

1.在linux下对写好的java程序编写shell脚本要怎么写

-----以下是我项目的startup.sh的内容------

-----用shell调用java程序----------

if [ -z ${JAVA_HOME} ]

then

echo "JAVA_HOME not set yet,can't run java program!"

exit -1

fi

CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar

JLIBDIR=./lib

export JLIBDIR

for LL in `ls ${JLIBDIR}/*.jar`

do

CLASSPATH=${CLASSPATH}:${LL}

done

echo ${CLASSPATH}

export CLASSPATH

JAVA_OPTION="-Dfile.encoding=GBK -Xms256m -Xmx256m -XX:MaxPermSize=64m"

RUN_CLASS=com.lxq.batch.Main

${JAVA_HOME}/bin/java ${JAVA_OPTION} -classpath ${CLASSPATH} ${RUN_CLASS}

2.如何在java中执行shell脚本

1、最常用的方法:Process p = Runtime.getRuntime().exec(SHELL_FILE_DIR + RUNNING_SHELL_FILE + " "+param1+" "+param2+" "+param3); int runnngStatus = p.waitFor();2、通过ProcessBuilder进行调度,这种方法比较直观,而且参数的设置也比较方便:ProcessBuilder pb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, param1, param2, param3);pb.directory(new File(SHELL_FILE_DIR));int runningStatus = 0;String s = null;try { Process p = pb.start(); try { runningStatus = p.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); }} catch (IOException e) { e.printStackTrace(); }if (runningStatus != 0) {}return;参数说明:RUNNING_SHELL_FILE:要运行的脚本SHELL_FILE_DIR:要运行的脚本所在的目录; 当然你也可以把要运行的脚本写成全路径。

runningStatus:运行状态,0标识正常。 详细可以看java文档。

param1, param2, param3:可以在RUNNING_SHELL_FILE脚本中直接通过1,1,2,$3分别拿到的参数。

3.如何在java中执行shell脚本

参考如下方式可以执行shell脚本:

// 用法:Runtime.getRuntime().exec("命令");

String shpath="/test/test.sh"; //程序路径

Process process =null;

String command1 = “chmod 777 ” + shpath;

try {

Runtime.getRuntime().exec(command1 ).waitFor();

} catch (IOException e1) {

e1.printStackTrace();

}catch (InterruptedException e) {

e.printStackTrace();

}

String var="201102"; /参数

String command2 = “/bin/sh ” + shpath + ” ” + var;

Runtime.getRuntime().exec(command2).waitFor();

4.求助,编写shell脚本,脚本内容执行一个java类

在Windows下写了个bat,你参考下吧,linux下也差不多。还要开虚拟机麻烦。

=======================Test0.java===========放在C:\下

public class Test0 {

public static void main(String[] args) {

System.out.println("输入的两个参数为:");

System.out.println(args[0]);

System.out.println(args[1]);

}

}

===========================test.bat ==============================

@echo off

rem 从控制台接收两个参数,并传递给java main的String[]args数组

echo 开始编译。

cd c:\

javac Test0.java

echo 编译成功!

set /p arg1=输入第一个参数:

set /p arg2=输入第二个参数:

echo -----------java执行输出----------------

java Test0 %arg1% %arg2%

echo ----------------------------------------

echo 操作完成!

pause

5.java怎么调用shell脚本

String cmdstring = "chmod a+x test.sh";

Process proc = Runtime.getRuntime().exec(cmdstring);

proc.waitFor(); //阻塞,直到上述命令执行完

cmdstring = "bash test.sh"; //这里也可以是ksh等

proc = Runtime.getRuntime().exec(cmdstring);

// 注意下面的操作

string ls_1;

BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(proc.getInputStream());

while ( (ls_1=bufferedReader.readLine()) != null);

bufferedReader.close();

proc.waitFor();为什么要有上面那段操作呢?

原因是:可执行程序的输出可能会比较多,而运行窗口的输出缓冲区有限,会造成waitFor一直阻塞。解决的办法是,利用Java提供的Process类提供的getInputStream,getErrorStream方法让Java虚拟机截获被调用程序的标准输出、错误输出,在waitfor()命令之前读掉输出缓冲区中的内容。

6.想写一个shell脚本,内容是一个创建目录的,还有java如何调用的,求

public static synchronized void www() throws Exception {

Process pro = null;

String cmd = "D:/database/sqlpad/sqlpad.cmd";

pro = Runtime.getRuntime().exec(cmd);

new DoOutput(pro.getInputStream()).start();

new DoOutput(pro.getErrorStream()).start();

}

private static class DoOutput extends Thread {

public InputStream is;

public DoOutput(InputStream is) {

this.is = is;

}

public void run() {

BufferedReader br = new BufferedReader(new InputStreamReader(this.is));

String str = null;

StringBuilder sb = new StringBuilder();

try {

while ((str = br.readLine()) != null){

sb.append(str+"\n");

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (br != null) {

try {

br.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

}

7.怎么通过java去调用并执行shell脚本以及问题总结

对于第一个问题:java抓取,并且把结果打包。

那么比较直接的做法就是,java接收各种消息(db,metaq等等),然后借助于jstorm集群进行调度和抓取。最后把抓取的结果保存到一个文件中,并且通过调用shell打包, 回传。

也许有同学会问, 为什么不直接把java调用odps直接保存文件,答案是,我们的集群不是hz集群,直接上传odps速度很有问题,因此先打包比较合适。(这里不纠结设计了,我们回到正题)java调用shell的方法通过ProcessBuilder进行调度这种方法比较直观,而且参数的设置也比较方便, 比如我在实践中的代码(我隐藏了部分业务代码):ProcessBuilderpb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, param1,param2, param3);pb.directory(new File(SHELL_FILE_DIR));int runningStatus = 0;String s = null;try {Process p = pb.start();try {runningStatus = p.waitFor();} catch (InterruptedException e) {}} catch (IOException e) {}if (runningStatus != 0) {}return;这里有必要解释一下几个参数:RUNNING_SHELL_FILE:要运行的脚本SHELL_FILE_DIR:要运行的脚本所在的目录; 当然你也可以把要运行的脚本写成全路径。

runningStatus:运行状态,0标识正常。 详细可以看java文档。

param1, param2, param3:可以在RUNNING_SHELL_FILE脚本中直接通过1,2,$3分别拿到的参数。直接通过系统Runtime执行shell这个方法比较暴力,也比较常用, 代码如下:p = Runtime.getRuntime().exec(SHELL_FILE_DIR + RUNNING_SHELL_FILE + " "+param1+" "+param2+" "+param3);p.waitFor();我们发现,通过Runtime的方式并没有builder那么方便,特别是参数方面,必须自己加空格分开,因为exec会把整个字符串作为shell运行。

可能存在的问题以及解决方法如果你觉得通过上面就能满足你的需求,那么可能是要碰壁了。你会遇到以下情况。

没权限运行这个情况我们团队的朱东方就遇到了, 在做DTS迁移的过程中,要执行包里面的shell脚本, 解压出来了之后,发现执行不了。 那么就按照上面的方法授权吧java进行一直等待shell返回这个问题估计更加经常遇到。

原因是, shell脚本中有echo或者print输出, 导致缓冲区被用完了! 为了避免这种情况, 一定要把缓冲区读一下, 好处就是,可以对shell的具体运行状态进行log出来。 比如上面我的例子中我会变成:ProcessBuilderpb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, keyword.trim(),taskId.toString(), fileName);pb.directory(new File(CASPERJS_FILE_DIR));int runningStatus = 0;String s = null;try {Process p = pb.start(); = new BufferedReader(new InputStreamReader(p.getInputStream())); = new BufferedReader(new InputStreamReader(p.getErrorStream()));while ((s = stdInput.readLine()) != null) {LOG.error(s);}while ((s = stdError.readLine()) != null) {LOG.error(s);}try {runningStatus = p.waitFor();} catch (InterruptedException e) {}记得在start()之后, waitFor()之前把缓冲区读出来打log, 就可以看到你的shell为什么会没有按照预期运行。

这个还有一个好处是,可以读shell里面输出的结果, 方便java代码进一步操作。也许你还会遇到这个问题,明明手工可以运行的命令,java调用的shell中某一些命令居然不能执行,报错:命令不存在!比如我在使用casperjs的时候,手工去执行shell明明是可以执行的,但是java调用的时候,发现总是出错。

通过读取缓冲区就能发现错误日志了。 我发现即便自己把安装的casperjs的bin已经加入了path中(/etc/profile, 各种bashrc中)还不够。

比如:exportNODE_HOME="/home/admin/node"exportCASPERJS_HOME="/home/admin/casperjs"exportPHANTOMJS_HOME="/home/admin/phantomjs"exportPATH=$PATH:$JAVA_HOME/bin:/root/bin:$NODE_HOME/bin:$CASPERJS_HOME/bin:$PHANTOMJS_HOME/bin原来是因为java在调用shell的时候,默认用的是系统的/bin/下的指令。特别是你用root权限运行的时候。

这时候,你要在/bin下加软链了。针对我上面的例子,就要在/bin下加软链:ln -s /home/admin/casperjs/bin/casperjscasperjs;ln -s /home/admin/node/bin/nodenode;ln -s /home/admin/phantomjs/bin/phantomjsphantomjs;这样,问题就可以解决了。

如果是通过java调用shell进行打包,那么要注意路径的问题了因为shell里面tar的压缩和解压可不能直接写:tar -zcf /home/admin/data/result.tar.gz /home/admin/data/result直接给你报错,因为tar的压缩源必须到路径下面, 因此可以写成tar -zcf /home/admin/data/result.tar.gz -C /home/admin/data/ result如果我的shell是在jar包中怎么办?答案是:解压出来。再按照上面指示进行操作。

(1)找到路径 String jarPath = findClassJarPath(ClassLoaderUtil.class); = null;try {topLevelJarFile = new JarFile(jarPath);Enumeration entries = topLevelJarFile.entries();while (entries.hasMoreElements()) {JarEntryentry = entries.nextElement();if (!entry.isDirectory() 。

javashell脚本怎么写

转载请注明出处育才学习网 » javashell脚本怎么写

知识

售后工作业绩怎么写

阅读(359)

本文主要为您介绍售后工作业绩怎么写,内容包括汽车4S店售后服务经理工作业绩如何写,简述个人售后服务工作经历怎么写,售后服务业绩怎么做。我找到一篇,可以作为参考 2004年是xx公司重要的战略转折期。 国内轿车市场的日益激烈的价格战、国家

知识

试卷成绩分析怎么写

阅读(303)

本文主要为您介绍试卷成绩分析怎么写,内容包括试卷分析要范文100~150字,试卷分析怎么写,小学语文试卷分析怎么写。写自己错的题目为什么会错的原因。自己同过这次考试有什么经验。下次考试如何对待,会怎么做。比如什么细心点啊什么的例如 这

知识

利润计划书怎么写

阅读(295)

本文主要为您介绍利润计划书怎么写,内容包括利润分配计划书怎么写,创业计划书怎么写,一份合格的项目实施计划书应该怎么写关于到利润分配问题处理。为了促进各企业关心生产,增强盈利,提高经济效益,做好利润留成再分配,在董事会的指导和大力帮助

知识

拒绝订单邮件怎么写

阅读(270)

本文主要为您介绍拒绝订单邮件怎么写,内容包括接了客户的订单却做不出来,要拒绝订单,怎写邮件,如何用英文写邮件如何委婉的拒绝客人的订单,并给出详细理由,用英,“拒绝合作”的邮件怎么写。Dear Customer,Thank you very much indeed for p

知识

奖学金奖励原因怎么写

阅读(265)

本文主要为您介绍奖学金奖励原因怎么写,内容包括奖学金申请理由怎么写,奖学金申请理由怎么写好50个字,奖学金的申请理由应该写哪些内容。你们好!我是07微电子(一)班的xxx,现申请“xxx奖学金”,希望各位领导能批准我们的申请。 我自07年9月入校以

知识

how代词怎么写

阅读(233)

本文主要为您介绍how代词怎么写,内容包括英语语法代词怎么写,WE的单词反身代词怎么写,how,what是关系代词还是关系副词。原发布者:萌萌教育英语语法代词与数词代词一.概说定义:代词(pronoun)是代替名词的词:1.1代词在句子中的功用1)和名词一样,可

知识

friend的音标怎么写

阅读(223)

本文主要为您介绍friend的音标怎么写,内容包括friend的音标,谁发谁的音,friend音标,单词:friend的音标frend中的ren拼出来的是什么音。friend的中文意思、音标、例句及语法单词音标英语音标:[frend]美语音标:[frɛnd]转载需注明“转自音标网yi

知识

班会技术课英语怎么写

阅读(220)

本文主要为您介绍班会技术课英语怎么写,内容包括班会课用英语怎么写,班会用英语怎么写,班会的英语怎么写。是关于健康的英语作业,60个单词Many people have realized the importance of health.

知识

第二十六用英语怎么写

阅读(290)

本文主要为您介绍第二十六用英语怎么写,内容包括26用英语怎么写,二十六用英语怎么写,26的英文怎么读。你好,26 twenty-six1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 ei

知识

飞字几笔画顺序怎么写

阅读(249)

本文主要为您介绍飞字几笔画顺序怎么写,内容包括飞的笔顺笔画怎么写呢,飞字笔画顺序怎么写,飞字笔画顺序怎么写的。【飞】的拼音:[fēi] 笔画数:3 部首:飞笔顺、笔画:横折弯钩/横斜钩、撇、点、基本释义:1.鸟类或虫类等用翅膀在空中往来活动:~天

知识

公司部门人员调整通知怎么写

阅读(272)

本文主要为您介绍公司部门人员调整通知怎么写,内容包括公司人员调动通知怎么写,公司人员调动通知怎么写,公司部门调整通知怎么写。关于公司人事变动的通知各部门: 因公司战略发展需要,经公司董事会研究,决定对以下人员工作岗位进行变动调整:1.

知识

辛辣的英文怎么写

阅读(393)

本文主要为您介绍辛辣的英文怎么写,内容包括辛辣的食物的英文怎么说,辣的英语怎么说,辣的英语单词怎么写。辛辣的食物的英文是:spicy food二、food音标:英 [fu:d]、美 [fud]三、food释义:n.粮食;食物,食品;养料;

知识

英语推荐信评语怎么写

阅读(224)

本文主要为您介绍英语推荐信评语怎么写,内容包括怎么写英文评语,英语作文推荐信80个字,写一封英文的推荐信谢谢了,。A.单词:Great!很好/Perfect!完美/Good!棒/Wonderful!好极了/Correct!是的/Excellent!太

知识

走亲戚的英语怎么写

阅读(296)

本文主要为您介绍走亲戚的英语怎么写,内容包括走亲戚用英语怎么说`,英语作文走亲戚范文,走亲戚的英语作文,字数不用太多。Spring Festival is the most important festival in China.Before Sprin

知识

完美情人脚本怎么写

阅读(308)

本文主要为您介绍完美情人脚本怎么写,内容包括完美情人如何设置定位传送脚本,完美私服情人辅助脚本怎么让窗口关闭,高分求一个完美私服完美情人或者喵刀自动生产轮回装备的脚本百度。脚本可以说是故事的发展大纲,用以确定故事的发展方向。之

知识

dv脚本怎么写

阅读(228)

本文主要为您介绍dv脚本怎么写,内容包括我想知道怎样写DV脚本,小学科学DV脚本怎么小学科学DV脚本怎么写,我们学校弄DV拍摄,谁能告诉我稿子怎么写啊我拍景色的。给你提供一个关于水的科学DV脚本!脚本题目是:今天你喝水了吗小学生喝水现况调查

知识

天路舞蹈脚本怎么写

阅读(240)

本文主要为您介绍天路舞蹈脚本怎么写,内容包括舞蹈的脚本怎么写,舞蹈剧目脚本怎么写,《天路》这一舞蹈表达了怎样的思想感情。脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。同时“脚本”又是

知识

舞台剧脚本怎么写

阅读(246)

本文主要为您介绍舞台剧脚本怎么写,内容包括舞台剧剧本怎么写,舞台剧剧本格式,话剧剧本怎么写。舞台剧应该说是人类创作最早的表演方式;在没有电影以前,特别是在中国,人类大众的娱乐活动,应说是以各种街头,场院,搭一个台子,来表演一些人

知识

怎么写iphone注册脚本

阅读(215)

本文主要为您介绍怎么写iphone注册脚本,内容包括苹果手机用什么软件写代码,iphone注册表格怎么填啊怎么填怎么错有没有高手高手搜狗问,注册苹果id代码怎么填。iTunes 账号获得 启动iTunes,我们来注册一个免费的账户吧。这里我们以美国地区的

知识

人物纪录片脚本怎么写

阅读(288)

本文主要为您介绍人物纪录片脚本怎么写,内容包括人物专题片脚本怎么写,纪录片分镜头脚本怎么写要写多少每个镜头都写完啊,求纪录片拍摄脚本。所有的电影,电视剧,广告,记录片,资料片.脚本的形式都是一样的.无非就是镜号,景别,拍摄手法,拍摄内容,旁白

知识

压力测试脚本怎么写

阅读(211)

本文主要为您介绍压力测试脚本怎么写,内容包括jmeter压力测试脚本怎么写,如何写脚本让手机自动恢复出厂设置压力测试需如何写脚本让手机自,loadrunnercontroller脚本怎么写。1:将需要测试的mxd文件放入mxdpefstat工具目录 2:cmd命令进入mxdp

知识

沙画脚本怎么写

阅读(178)

本文主要为您介绍沙画脚本怎么写,内容包括沙画脚本文字怎么规划,一般10分钟视频大概多少字,沙画剧本怎么写,脚本是怎么写的。脚本可以说是故事的发展大纲,用以确定故事的发展方向。之后,确定故事到底是在什么地点,什么时间,有哪些角色,角色的对

[/e:loop]