1. 编写一个start.sh脚本,使用jar启动springboot工程
2. 想要启动后,脚本自动退出
3. 最好是判断出启动成功了,再退出
1. 利用nohup实现守护进程和&实现可以退出当前窗口
2. 利用tail -fn --pid 追查文件最新末尾,并且只看新输入的变动(n 0控制的),并且在pid指定的进程完成后,退出tail。
备注:
1. 不使用n 0的话,只用tail -f,会导致先加载文件的内容到末尾,此时如果sed有匹配的内容,就会直接退出了。使用n 0就可以永远只监听最新新输入的变动,从而避免这个情况。
3. 使用sed匹配关键字,并搭配/q,在匹配到内容后退出sed进程。
启动jfqqqq.jar:
- #!/bin/sh
- echo 'start jfqqq.jar'
- nohup java -jar jfqqq.jar --server.port=8888 --logging.level.root=info &
- tail -fn 0 --pid=`ps uxh|grep "sed /Started jfqqq in/Q"|grep -v "grep" | awk '{ print $2 } ' | sort -nr | head -1 ` nohup.out|sed '/Started jfqqq in/Q'
- echo 'start succeed!'
A. sed '/Started Viewer in/Q'
B. sed /Started[[:space:]]Viewer[[:space:]]in/Q
比如:
tail -fn 0 --pid=`ps uxh|grep "sed /Started Viewer in/Q"|grep -v "grep" | awk '{ print $2 } ' | sort -nr | head -1 ` nohup.out|sed '/Started Viewer in/Q'
里边grep处的sed /Started...就没有写为"sed '/Started",虽然后边的sed命令使用了"'"。
这三个都无法直接回车:
- echo \n--------------- start succeed! ----------------------
- echo \\n--------------- start succeed! ----------------------
- echo '\n--------------- start succeed! ----------------------'
- echo "\n--------------- start succeed! ----------------------"
-
效果:
这样可以:
- echo -e '\n--------------- start succeed! ----------------------'
- echo -e "\n--------------- start succeed! ----------------------"