先上一段 公司linnux启动服务脚本
#!/bin/sh
source /etc/profile
su - javaapp -c "nohup java -jar $JAVA_PARAM_APP $JAVA_OPTS_APP /home/javaapp/app/itp-app-server-0.0.1-SNAPSHOT.jar --spring.config.location=/home/javaapp/app/config/app/bootstrap8080.yml >/dev/null 2>/home/javaapp/app/logs/itp-appService.file&"
ps -ef | grep "itp-app-server-0.0.1-SNAPSHOT.jar" | grep -v grep | awk '{print $2}'>/opt/apprun/app.pid
现对上面的命令进行下解释
source /etc/profile的作用
使/etc/profile里的配置立即生效
比如你在/etc/profile里写了java的环境变量
如果不执行source 当前环境下是不生效的
nohup 用途:不挂断地运行命令。
语法:nohup Command [ Arg ... ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
操作系统中有三个常用的流:
0:标准输入流 stdin
1:标准输出流 stdout
2:标准错误流 stderr
一般当我们用 > console.txt,实际是 1>console.txt的省略用法;< console.txt ,实际是 0 < console.txt的省略用法。
具体 nohup详解:https://blog.youkuaiyun.com/liuyanfeier/article/details/62422742,这个讲的特别详细,可以参考
下面步入正题:
$JAVA_PARAM_APP 一个本地变量,堆内存限制300M,JAVA_PARAM="-Xms300m -Xmx300m"
nohup然后不挂断的执行 后面这个jar,然后把标准错误流输出到itp-appService.fileh这个文件