Linux 下 JAVA执行命令批处理方式
Posted Asura2017
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 下 JAVA执行命令批处理方式相关的知识,希望对你有一定的参考价值。
#r包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到 #!/bin/bash JAR_ALLNAME="/home/api/md/md-biz.jar" JAR_NAME="md-biz.jar" #JAR_NAME2="admin-service/admin-service.jar" # 日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到 LOG_PATh=yurgqg.log # 如果输入格式不对,给出提示! tips() echo "" echo "WARNING!!!......Tips, please use command: sh auto_deploy.sh [start|stop|restart|status]. For example: sh auto_deploy.sh start " echo "" exit 1 # 启动方法 start() # 重新获取一下pid,因为其它操作如stop会导致pid的状态更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk \'print $2\'` # -z 表示如果$pid为空时执行 if [ -z $pid ]; then nohup java -jar $JAR_ALLNAME >> $LOG_PATh 2>&1 echo "启动$JAR_NAME" fi # 停止方法 stop() # 重新获取一下pid,因为其它操作如start会导致pid的状态更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk \'print $2\'` # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 if [ -z $pid ]; then echo "" echo "Service $JAR_NAME is not running! It\'s not necessary to stop it!" echo "" else kill -9 $pid echo "" echo "Service stop successfully!pid:$pid which has been killed forcibly!" echo "" fi # 输出运行状态方法 status() # 重新获取一下pid,因为其它操作如stop、restart、start等会导致pid的状态更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk \'print $2\'` # -z 表示如果$pid为空时执行。注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 if [ -z $pid ];then echo "" echo "Service $JAR_NAME is not running!" echo "" else echo "" echo "Service $JAR_NAME is running. It\'s pid=$pid" echo "" fi # 重启方法 restart() echo "" echo ".............................Restarting.............................." echo "....................................................................." # 重新获取一下pid,因为其它操作如start会导致pid的状态更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk \'print $2\'` # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 if [ ! -z $pid ]; then kill -9 $pid fi start echo "....................Restart successfully!..........................." # 根据输入参数执行对应方法,不输入则执行tips提示方法 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) tips ;; esac
zzzzzzzzzzzz
linux系统下java执行带rar命令解压带有空格的文件
最近在linux系统下解析rar文档,应为java没有解析rar的库,所以只能用rar的命令来解析。
在用rar命令时,遇到了问题:如果rar文件名中带有空格,那么就没法用命令了,命令失去了意义。
我想过可能是要加引号吧,或是加其他什么分隔号的,我试了很多中分隔的方法,但是都没有实现。
我试了下,在linux系统下,用java程序,只要加了引号,程序就根本解析不了rar。(命令后得到的流对象为空)
当时我在linux的后台命令下执行加引号,却能够执行。
我又到windows下去,windows下加引号是可以解决的。在程序里也能解决。
我那程序是用java的Runtime、和Process两个类
具体做法是
String commd = "unrar 的命令";
Runtime rt = Runtime.getRuntime() ;
Process p = rt.exec(commd);
InputStream inputStream = p.getInputStream();
如果在执行命令时,rar文件中文件名有空格,则没有办法生成有效的进程。p得不到流。
大家有没有遇到这样的问题呢?
帮着解决下哦
今天去试了下,在终端能够用使用转意字符\ 和引号,但是在程序里面还是得不到流啊。也就是命令没起作用
test file.rar 实际引用的时候就是 test\ file.rar
至于怎么解决 我就不再多说了哈 参考技术A 将命令封装为脚本文件,通过调用脚本文件去执行命令 参考技术B 1:使用单引号而非双引号
2:使用转意字符\
以上是关于Linux 下 JAVA执行命令批处理方式的主要内容,如果未能解决你的问题,请参考以下文章