一個啟動腳本例子

一、全部代碼?

#!/bin/bash
DATE=$(date +%Y%m%d)SOURCE="abc.jar"
TARGET="backup/abc.jar.jew.$DATE"if [ -f "$SOURCE" ]; thencp "$SOURCE" "$TARGET"
firm -f abc.jar
mv abc_1.jar abc.jarpidNum=`ps -ef | grep $SOURCE | grep -v "grep"|awk '{print $2}'`
if [ "$pidNum" = "" ];thenecho "not"
elseecho "pid : $pidNum"kill -15 $pidNumecho "successfully"
finohup java -jar abc.jar > log.file 2>&1

二、分析

后端語言:java? ? ? ? 新jar包名字:abc_1.jar? ? ? ? 老jar包(被替換jar包):abc.jar

目的:首先判斷后端的abc.jar是否存在,如果存在,那就把這個jar復制并加當前時間命名后作為備份,放到備份文件夾里。刪除abc.jar,把新jar包abc_1.jar重命名為abc.jar。停掉進程后,重新啟動。

---------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash
DATE=$(date +%Y%m%d)? ? ? ? #輸出當前日期,賦值給DATE變量,格式為20240627

SOURCE="abc.jar"? ? ? ? #當前jar名字賦值SOURCE變量
TARGET="backup/abc.jar.jew.$DATE"? ? ? ? #backup路徑下abc.jar加當前日期后綴,備份

if [ -f "$SOURCE" ]; then? ? ? ? #如果SOURCE存在(-f:判斷后邊的路徑是否是一個常規文件)
? ? cp "$SOURCE" "$TARGET"? ? ? ? #將SOURCE復制到TARGET,后綴有當前日期
fi? ? ? ? #語句結尾

rm -f abc.jar? ? ? ? #強制刪除abc.jar
mv abc_1.jar abc.jar? ? ? ? #將abc_1.jar重命名為abc.jar?

pidNum=`ps -ef | grep $SOURCE | grep -v "grep"|awk '{print $2}'`

#ps -ef :查看正在運行的所有進程的完整信息;|:在這個結果的基礎上;grep $SOURCE:查找文件里含有SOURCE(abc.jar)的信息;|:在這個結果的基礎上;grep -v "grep":查找并去掉含有grep的進程;|:在這個結果的基礎上;awk '{print $2}':格式化文本信息,輸出第二個字段值,也就是進程號,賦值給pidNum。
if [ "$pidNum" = "" ];then? ? ? ? #如果進程號為空
?? ?echo "not"? ? ? ? #輸出not,就證明當前沒有進程運行,可以直接啟動
else? ? ? ? #不為空,有進程運行
?? ?echo "pid : $pidNum"? ? ? ? #輸出進程號
?? ?kill -15 $pidNum? ? ? ? #退出進程
?? ?echo "successfully"? ? ? ? #提示退出進程成功
fi????????#語句結尾

nohup java -jar abc.jar > log.file 2>&1? ? ? ?

#nohup:確保進程登出或會話關閉后仍然運行java程序。java -jar abc.jar:運行java應用程序。 >:重定向輸出。log.file:將被重定向到的文件。 2>&1:將標準錯誤重定向到標準輸出的同一個地方(log.file),這樣就可以將錯誤和信息都記錄到同一個文件中。也可以最后多加一個&表示將命令放入后臺運行。

---------------------------------------------------------------------------------------------------------------------------------

三、關于2>&1的問題

2是標準錯誤輸入,1是標準輸出。>&是一個整體,不能分開使用,否則就不是這個含義了。

還有 log.file、2、1的排列順序,不能打亂:

> log.file 2>&1 含義:1本來指向屏幕,執行> log.file,1指向 log.file;執行2>&1,2指向1,而1指向 log.file,所以1和2都指向log.file。此時1和2都指向log.file

2>&1 > log.file 含義:1本來指向屏幕,執行2>&1,2指向1,而1指向屏幕,所以1和2都指向屏幕;執行> log.file,1指向log.file。此時只有1指向了log.file。(所以這樣就會導致有錯誤輸出的時候log.file沒有記錄!!!)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37661.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37661.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37661.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【源碼+文檔+調試講解】基于vue的線上點餐系統

摘要 隨著信息技術在管理上越來越深入而廣泛的應用,管理信息系統的實施在技術上已逐步成熟。本文介紹了線上點餐系統的開發全過程。通過分析線上點餐系統管理的不足,創建了一個計算機管理線上點餐系統的方案。文章介紹了線上點餐系統的系統分析部分&…

電腦提示vcomp140.dll缺失怎么解決?vcomp140.dll是什么文件?

當你的電腦提示vcomp140.dll缺失的時候,你就應該要注意了,因為這個提示的出現,代表你的某個程序開不了!想要程序能正常運行,那么只要修復好這個vcomp140.dll文件就可以了,下面我們就來給大家詳細的說說說vc…

超詳細之IDEA上傳項目到Gitee完整步驟

1. 注冊gitee 賬號密碼,gitee官網地址:Gitee官網,注冊完成后,登錄。 2. 創建倉庫,在主頁左下角有新建按鈕,點擊新建后會進入到此頁面填寫倉庫信息。 3. 創建完成后復制倉庫地址 4. 打開IntelliJ IDEA新建或…

python自動化之schedule

目錄 代碼(以每5秒1次為例): 每5分鐘1次 每2小時1次 每天18:00執行 用到的庫:schedule,time 實現的效果:按秒來運行任務,按分鐘來運行任務,按小時來運行任務,按天來運行任務 代…

鴻蒙3.0WebView網絡錯誤問題

背景,榮耀9x,混淆才會出這個問題。 [ERROR:ssl_client_socket_impl.cc(981)] handshake failed; returned -1, SSL error code 1, net_error -2 NetError.java int SSLClientSocketImpl::DoHandshake() {crypto::OpenSSLErrStackTracer err_tracer(FRO…

Oracle新特性速遞:未來數據庫技術的無限可能

文章目錄 一、自治數據庫:智能化與自動化的革命二、機器學習集成:智能數據分析的新境界三、區塊鏈技術:確保數據完整性與透明性四、云原生數據庫:靈活擴展與快速部署五、人工智能優化器:智能查詢執行計劃《Oracle從入門…

centos7搭建zookeeper 集群 1主2從

centos7搭建zookeeper 集群 準備前提規劃防火墻開始搭建集群192.168.83.144上傳安裝包添加環境變量修改zookeeper 的配置 192.168.83.145 和 192.168.83.146 配置 啟動 集群 準備 vm 虛擬機centos7系統zookeeper 安裝包FinalShell或者其他shell工具 前提 虛擬機安裝好3臺cen…

為什么我的Skype點數不見了?如何重新激活 Skype 點數?

您超過180天沒有使用過點數打電話功能,點數暫時封存在您的賬戶里面,需要您手動激活(目前必須要登錄網頁版skype) 可再次使用。 如何重新激活 Skype 點數? 登錄到你的帳戶 . 選擇 重新激活信用額度 .注意: …

MiniTest

1.編輯case文件first_test.py import minium class FirstTest(minium.MiniTest): def test_get_system_info(self): 2.編輯配置文件config.json { "project_path": "path/to/project", "dev_tool_path": "path/to/cli", "…

【Python】 Joblib:高效的Python作業調度和緩存工具

那年夏天我和你躲在 這一大片寧靜的海 直到后來我們都還在 對這個世界充滿期待 今年冬天你已經不在 我的心空出了一塊 很高興遇見你 讓我終究明白 回憶比真實精彩 🎵 王心凌《那年夏天寧靜的海》 在Python數據科學和機器學習中,處理…

喜訊!安全狗榮獲“2023年網絡安全技術支撐優秀單位”稱號

6月6日,由中共廈門市委網絡安全和信息化委員會辦公室(以下簡稱“廈門市委網信辦”)主辦的2023年網絡安全技術支撐優秀單位頒獎儀式在廈門成功舉行。 作為國內云原生安全領導廠商,安全狗受邀出席此次活動。 會上,安全狗…

預約小程序源碼,云開發技術,無需服務器

介紹: 很多企業的業務都需要通過服務預約來完成,比如酒店、美容、家政等等。 但很多商家因缺少合適的服務預訂工具,而不知道如何讓客戶盡快預約。 這種情況下,制作一個自己的預約小程序,客戶只需要掃碼或者在微信里…

Eureka的橋梁:服務消費者交互全解析

Eureka的橋梁:服務消費者交互全解析 在微服務架構中,服務發現是確保服務間有效通信的關鍵機制。Eureka,作為Netflix開源的服務發現框架,扮演著服務注冊中心的角色,為服務消費者和服務提供者提供了一個動態的服務注冊與…

調用基類的純虛函數,如何知道純虛函數會調用哪個派生類(子類)中的實現。

在 C 中,調用基類的純虛函數實際上是通過運行時多態性來決定調用哪一個派生類的實現。這種機制是通過虛函數表(vtable)和虛函數指針(vptr)實現的。下面我們來詳細探討一下這個過程。 虛函數表和虛函數指針 虛函數表&a…

開放簽電子簽章系統(企業版)V2.0.5版本詳細更新內容

本次版本迭代間隔1月之久,新功能主要是增加文件的簽署記錄并生成報告,其次優化支持非A4規格的簽約文件(這個費時很久,主要原因是推翻之前的位置計算的邏輯,重新計算坐標位置),詳細更新內容如下&…

WebKit與CSSOM視圖模塊:探索現代Web布局的協同進化

WebKit與CSSOM視圖模塊:探索現代Web布局的協同進化 在當今快速發展的Web技術領域,WebKit作為眾多流行瀏覽器的渲染引擎,其對CSS對象模型(CSSOM)視圖模塊的支持至關重要。CSSOM視圖模塊為開發者提供了一組豐富的API&am…

HarmonyOS--開發者證書地址

初級證書:華為開發者學堂 高級證書:華為開發者學堂

【Qt】QSettings使用

1. 介紹 QSettings類提供持久的跨平臺的應用程序設置存儲。 2. 使用 /*********************************************************/ /* main.cpp */ int main(int argc, char *argv[]) {QApplication a(argc, argv);//Settings設置a.setOrganizationName("custom"…

【筆記】通過shell腳本自動部署項目(未完成)

然后將gitee倉庫上的代碼克隆至linux上 如果不知道gitee倉庫怎么上傳代碼移步【筆記】如何在gitee倉庫上傳idea代碼-CSDN博客 寫到一半不想寫了自己去復習p138-139吧

【0基礎學爬蟲】爬蟲基礎之scrapy的使用

【0基礎學爬蟲】爬蟲基礎之scrapy的使用 大數據時代,各行各業對數據采集的需求日益增多,網絡爬蟲的運用也更為廣泛,越來越多的人開始學習網絡爬蟲這項技術,K哥爬蟲此前已經推出不少爬蟲進階、逆向相關文章,為實現從易到…