#!/bin/bash
APP_FILE=flame-commondata-1.1.0.jar
APP_PATH=/data/bi
PID=$(ps -ef | grep $APP_FILE | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill $PID
fi
:>web.log
nohup java -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -Duser.timezone=GMT+8 -jar $APP_PATH/$APP_FILE --spring.profiles.active=uat --spring.clickhouse.enabled=true --download.csv.url="http://10.162.65.68/CPD/download/simulation/" --download.csv.path=/home/arvatoadmin/cpd/download/simulation --spring.datasource.url="jdbc:log4jdbc:sqlserver://10.162.65.27:5432;databaseName=XXX" --spring.datasource.driverClassName=net.sf.log4jdbc.DriverSpy --spring.datasource.username=XX --spring.datasource.password=XXX --server.port=9003 --spring.cloud.zookeeper.connectString=localhost:2181 --spring.mvc.prop.includ=ALWAYS --mybatis-plus.configuration.call-setters-on-nulls=true --spring.cloud.zookeeper.discovery.instanceIpAddress=10.162.65.19 --spring.clickhouse.url=jdbc:clickhouse://10.162.65.43:5432/default --spring.clickhouse.socketTimeout=90000 >/data/bi/web.log 2>&1 &
2>&1:
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
偶尔也可以把 & 在命令的最后加上,表示让程序后台执行。
为何2>&1要写在后面?
index.php task testOne >/dev/null 2>&1
我们可以理解为,左边是标准输出,好,现在标准输出直接输入到 /dev/null 中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输入到/dev/null中。
可以理解为,如果写在中间,那会把隔断标准输出指定输出的文件
你可以用
ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。
其中日志输出目录>/data/bi/web.log 如果不需要记日志,则可以写成 /dev/null
1.nohup
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
2.&
用途:在后台运行
一般两个一起用
nohup command &
eg:
1
|
nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &
|