java  调用bash shell脚本阻塞的小问题的解决 背景 使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结果给web 界面显示. 现象: Java 进程阻塞.使用ps命令可以看到被调用的shell 的执行进程状态为S 分析 Shell子进程的状态是S 睡眠状态,也就是该进程在等待某个条件满足,方能继续执行. Java程序在调用Runtime.getRuntime().exec(jyName)之后,lin…
此程序的目的是执行远程机器上的Shell脚本. [环境参数]远程机器IP:192.168.234.123用户名:root密码:rootShell脚本的路径:/home/IFileGenTool/BakProvisionAndOccurEntrance.sh [具体步骤]1.在远程机器上,准备Shell脚本.[root@localhost IFileGenTool]# vim ./load_data.sh #!/bin/sh source /etc/profile dbName=$ tableNa…
1.java远程执行shell脚本类 package com.test.common.utility; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import org.apache.commons.io.IOUtils; import org.apache.commons.…
在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符,不会作变量的引用,直接输出字符窜.请看如下例子: [root@linux ~]# name=HaHa [root@linux ~]# echo $name HaHa [root@linux ~]# myname="$nam…
bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash shell 的,所以你不需要额外配置所谓的开发环境. 我的 shell 环境是 macOS Sierra 版本,如果你用的是其他 Linux 系统,后面的例子基本上都是可以运行的. 首先,打开Terminal 命令行,先检查下你的系统的 shell 版本: echo $BASH_VERSION bas…
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一:   . ./subscript.sh 方法二:   source ./subscript.sh 注意: 1.两个点之间,有空格,千万注意. 2.两个脚本不在同一目录,要用绝对路径 3.为简单起见,通常用第一种方法 例如: 复制代码代码如下: main.sh           #主脚本 subscripts.sh     #子脚本,或者说被调脚本 [code] [code] ###subscripts.sh 脚本…
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一:   . ./subscript.sh  (两个点之间,有空格) 方法二:   source ./subscript.sh 以第一种方式为例: sub.sh main.sh 执行输出:  注意: 1.在main.sh中调用sub.sh脚本后,sub.sh中的命令都会执行 2.在main.sh中调用sub.sh脚本中注意脚本路径,可以为相对路径,也可为绝对路径…
问题的提出: shell脚本要做离线的数据处理任务 java调用脚本,将这种处理任务封装成webservice 特点: shell处理单个时间长 每次要处理文件量大 这里目前只做调用分析: 原来的: private void runShell(String cmd){ try{ logger.info("the command "+cmd); // create a process for the shell ProcessBuilder pb = new ProcessBuilder…
1.引子 前几天有一个需求是这样的:本机的shell脚本,通过远程调用另一台机子上的shell脚本,来完成对远程机子上分发的Java程序的执行和其他操作.看上去挺容易,实际上也不难. 第一步:用scp从本机向目的机子分发Java程序: 第二步:编写shell脚本,用ssh完成调用. 然而,问题来了. 2.分析 先声明:第一,Local和Remote两个机子上的JDK安装路径.环境变量(都配置在.bash_profile中).使用的版本统统一样:第二,Java程序在Remote机上用shell脚本…
1.基础 #!/bin/bash   //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本 #                 //shell脚本注释符号 2.变量和使用 HOME="/home"                //注意赋值不要有空格 a=123 HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量 ehco $HOME                   //$ 符号是获得变量HOME的值 a=a+1 系统变量: $0 这个程序…