Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文

springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。

  • dev 開発環境
  • prod 本番環境(デフォルト)
  • テストテスト環境

指定されたプロファイルをロードします --spring.profiles.active=prod

Springboot は次の方法で jar パッケージを読み込みます。

// コンソールで直接開始します。欠点は、コンソールを閉じるとプロジェクトが閉じられることです。
java -jar bootdo.jar
// このメソッドはバックグラウンドで実行できますが、シェルが起動されるとハングします java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 &
// nohup が追加された場合、シェルを終了しても影響を受けません。
nohup java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 &

説明する

nohup は永続的に実行されることを意味します。 & はバックグラウンド操作を示します

> はリダイレクト先を表します

1 は stdout 標準出力を意味します。システムのデフォルト値は 1 なので、 ">/dev/null" "1>/dev/null"と同等です。

2はstderr標準エラーを意味します

nohup ./mqnamesrv >/home/cxb/mqnamesrv.out 2>&1 &つまり、標準出力は mqnamesrv.out に送信されます。次に、標準エラー出力は標準出力と同じファイルにリダイレクトされます。

以下の方法でサーバーが正常に起動した後、再起動が必要な場合は、 ps -ef | grep bootdoでプロセス ID を照会し、 kill -s 9 ${pid}でサーバーを強制終了して再起動する必要がありますが、これは非常に面倒です。

nohup java -jar /bootdo-2.0.0.jar > bootdolog.file 2>&1 & 

一度や二度なら大丈夫ですが、何度も起こると、ちょっと大変になります。

このように、シェルスクリプトを記述して、開始(start)、停止(stop)、再開(restart)操作を1つのステップで実行することができ、便利で効率的です。

カスタム ディレクトリに wss.sh スクリプトを作成し、次のように内容を編集します。

#!/bin/bash
#これは独自の実行可能プログラムに置き換えることができます。他のコードは変更する必要はありません APP_NAME=websocketserver-0.0.1-SNAPSHOT.jar
 
#使用方法の説明。パラメータ入力を促すために使用します。usage() {
 echo "使用方法: sh スクリプト名.sh [start|stop|restart|status]"
 出口1
}
 
# プログラムが実行中かどうかを確認する is_exist(){
 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
 # 存在しない場合は 1 を返し、存在する場合は 0 を返します 
 [ -z "${pid}" ]の場合;
 戻り値 1
 それ以外
 0を返す
 フィ
}
 
#Startメソッドstart(){
 存在する
 [ $? -eq "0" ]の場合;
 echo "${APP_NAME} はすでに実行されています。pid=${pid} 。"
 それ以外
 nohup java -jar /mnt/ssd1/project/websocket/$APP_NAME > /mnt/ssd1/project/websocket/websocketserverlog.file 2>&1 &
 echo "${APP_NAME} の起動に成功しました"
 フィ
}
 
#Stopメソッドstop(){
 存在する
 [ $? -eq "0" ]の場合;
 -9 $pid を強制終了する
 それ以外
 echo "${APP_NAME} は実行されていません"
 フィ 
}
 
# 実行ステータスを出力する status(){
 存在する
 [ $? -eq "0" ]の場合;
 echo "${APP_NAME} が実行中です。PID は ${pid} です"
 それ以外
 echo "${APP_NAME} は実行されていません。"
 フィ
}
 
#再起動restart(){
 停止
 始める
}
 
#入力パラメータに応じて、実行するメソッドを選択します。入力がない場合、メソッドが実行されます。ユースケース「$1」の説明
 "始める")
 始める
 ;;
 "停止")
 停止
 ;;
 "状態")
 状態
 ;;
 "再起動")
 再起動
 ;;
 *)
 使用法
 ;;
エサック

赤でマークされた行で起動コマンドを設定します。

その後は、 wss.sh start | stop | restartを使用して起動、停止、再起動できます。

追加

sh xxx.sh と ./xxx.sh の違い

sh xxx.shには実行権限は必要ありません

./xxx.sh には実行権限が必要です。これはchmod +x xxx.shで付与できます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • springboot jarパッケージを使用するとサービスとして起動できます
  • springboot jarパッケージを使用するとサービスとして起動できます
  • SpringBoot で jar および war パッケージをビルド、パッケージ化、起動する方法についての詳細なチュートリアル
  • SpringBoot プロジェクトの実行中の jar パッケージの起動ステップのプロセス分析
  • SpringBoot jar パッケージを起動する方法

<<:  Vueは不規則なスクリーンショットを実装する

>>:  Mysql を 5.7 にアップグレードした後のグループ クエリの問題を解決する

推薦する

jsオブジェクトの読み取り速度の詳細な例

1. リテラルとローカル変数へのアクセスは最も高速ですが、配列要素とオブジェクト メンバーへのアクセ...

Javascript の基礎: 演算子とフロー制御の詳細な説明

目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...

Windows 2016 Server セキュリティ設定

目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...

Vue プロジェクトは、コードの暗号化と難読化を実装するために webpack-obfuscator を設定します。

背景会社のコードは第三者に提供され、利用されます。ソースコードが完全に漏洩しないようにするには、提供...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

JSはショッピングカート効果の単純な加算と減算を実装します

この記事の例では、ショッピングカートの簡単な追加と削除を実現するためのJSの具体的なコードを参考まで...

Linuxでmysqlの定期的なコールドバックアップを実装するためにmysqldump+expect+crontabを使用するアイデアの詳細な説明

目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...

DockerとVMwareの競合を解決する

1. Dockerの起動の問題:問題は解決しました: Hyper-V をオンにする必要があります (...

CSSカスタムプロパティの予備的な理解

現在、CSS プリプロセッサは Web 開発の標準となっています。 プリプロセッサの主な利点の 1 ...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

Vue フィルターの実装と適用シナリオの詳細な説明

1. 簡単な紹介Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを...

React における ref の一般的な使用法の概要

目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....

Dockerコンテナを停止および削除できない問題の解決策

実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...

Dockerはコンテナに入るためにルートを使用する

まずdockerコンテナを実行しますルートユーザーとしてコマンドを実行する sudo docker ...

Linux でのログ サーバーの設定に関するグラフィック チュートリアル

序文この記事では、Linux 構成ログ サーバーに関する関連コンテンツを主に紹介し、参考と学習のため...