文章目录
- 指定jar程序运行的外部依赖
- 指定参数名称传参给程序
- shellUtil命令传参JSON串
- shellUtil获取回调nohub启动程序后的pid
指定jar程序运行的外部依赖
nohup java -Djava.ext.dirs=./lib/ -cp DataSourceAccessPage.jar com.sitech.adapter.JsonAdapter arg0 arg1
java -cp 命令跟jar路径和指定的编译类(main)路径;
java -jar 跟jar路径也ok,但是需要打包的时候指定jar包里的 MANIFEST.MF 文件中 Main-Class项的值。即默认运行的main函数。
指定参数名称传参给程序
使用getopts命令。
getopts命令识别出各个入参选项之后(用:分隔),遍历case判断。其操作中,有两个"常量",一个是OPTARG,用来获取当前选项的值;另外一个就是OPTIND,表示当前选项在参数列表中的位移,反映下一个要处理的参数索引,初始值是1。
while getopts ":a:b:c:" opt
docase $opt ina)echo "参数a的值$OPTARG,$OPTIND";;b)echo "参数b的值$OPTARG,$OPTIND";;c)echo "参数c的值$OPTARG,$OPTIND";;?)echo "未知参数"exit 1;;esac
done
sh getTop.sh -b 2 -a 1 -c 3 -d 4
参数b的值2,3
参数a的值1,5
参数c的值3,7
未知参数
shellUtil命令传参JSON串
传参的json串:
String string ="[{\"nodeName\":\"cdrtype\",\"nodePath\":\"cdrinfo\"},{\"nodeName\":\"cdraddupid\",\"nodePath\":\"cdrinfo\"},{\"nodeName\":\"cdrcycleid\",\"nodePath\":\"cdrinfo\"}]";String string ="{\"groupId\":\"test\",\"kafkaClusterUrl\":\"xxxxx:9092\",\"targetConnector\":\",,\",\"targetKafkaClusterUrl\":\"xxxxx:9092\",\"targetPartionNum\":\"2\",\"targetTopicNum\":\"2\",\"targetTopicPreName\":\"envent_topic_\",\"topics\":\"event_topic_2\"}";
shellUtil命令:
// 命令接口参数shellCommand += " \"" + jsonDsInfo.replaceAll("\"", "\\\\\"") + "\" "+ " \"" + jsonFieldList.replaceAll("\"", "\\\\\"") + "\" "
否则会是: -cp xx xx “arg0” “arg1”
java的replaceAll要用四个反斜杠表示一个反斜杠
因为replaceAll里面要提交给一次正则表达式。
shellUtil获取回调nohub启动程序后的pid
nohup java -version >tets.log & echo $!
在脚本中,$!
代表最后执行的进程的PID。
https://codingdict.com/questions/42913 , 或者输入她到文件中,再cat出来
可选
nohup java -version >tets.log & echo $! cbry/tets.pid | cat cbry/tets.pid