jar程序部署的外部依赖和按名传参和shellUtil传参json串及返回pid问题

文章目录

  • 指定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
do
    case $opt in
        a)
        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

你可能感兴趣的:(Linux,jar,shellUtil,shell,部署)