#!/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 &
|