xshell java啟動后台運行命令


#!/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 參數指定的命令不可調用。

退出狀態:該命令返回下列出口值:   
  126 可以查找但不能調用 Command 參數指定的命令。   
  127 nohup 命令發生錯誤或不能查找由 Command 參數指定的命令。   
  否則,nohup 命令的退出狀態是 Command 參數指定命令的退出狀態。

2.&

用途:在后台運行

一般兩個一起用

nohup command &

eg:

1
nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM