[実践プロジェクト] Linux システムでの Jar パッケージの自動起動

jar パッケージの自己起動とは何ですか

Linux システムでは、「自己起動型 jar パッケージ」とは、構成を通じて Java プログラムを実行可能な Jar ファイルにパッケージ化し、システムの起動時に自動的に実行されるように設定することを指します。次に、jar パッケージの自己起動に関連するいくつかの概念を示します。

Jar ファイル: Jar (Java Archive) ファイルは、Java プログラムのパッケージ化と配布に使用されるファイル形式です。Java クラス ファイル、リソース ファイル、ライブラリ ファイルなどを含めることができます。Jar ファイルは Java 仮想マシン (JVM) を使用して、そのファイル内のプログラムを実行できます。

実行可能 Jar ファイル: 実行可能 Jar ファイルとは、メイン プログラムのエントリ ポイントが埋め込まれた Jar ファイルを指し、Java コマンドまたはダブルクリックによって直接実行できます。マニフェスト ファイルに Main-Class 属性を設定することで、Jar ファイルを実行可能としてマークできます。

起動スクリプト: 起動スクリプトは、環境変数の設定、Java 仮想マシンの起動、メイン プログラムの実行可能 Jar ファイルのパラメータとしての指定など、特定の操作を実行するために使用されるシェル スクリプトです。通常、起動スクリプトは Java プログラムをバックグラウンド プロセスとして実行します。

システム サービス: Linux システムでは、Jar ファイルをシステム サービスとして管理して、システムの起動時に自動的に実行できるようにすることができます。システム サービスは、バックグラウンド機能を提供するプログラムであり、システム起動スクリプトまたはサービス管理ツール (Systemd など) を通じて管理および制御できます。

Systemd: Systemd は、Linux システムの初期化システムおよびサービス マネージャーです。システムサービスの起動、停止、再起動、状態表示などの操作を管理できます。Systemd ユニット ファイルを作成して構成すると、Jar ファイルを Systemd サービスとして使用し、システムの起動時に自動的に実行されるように設定できます。

自己起動型 jar パッケージの利点

システムの起動時に自動的に実行する: Jar パッケージを自己起動サービスとして設定すると、システムの起動時にプログラムが自動的に実行されるようにすることができます。これは、システムの起動後に手動で起動する必要がなく、バックグラウンド サービスとして実行する必要があるアプリケーションに便利です。

便利な管理とメンテナンス: Jar パッケージを自己起動サービスとして使用した後、関連するツールやコマンドを使用して、サービスの開始、停止、再起動、ステータス表示などの管理とメンテナンスを行うことができます。これにより、運用が簡素化され、管理効率が向上します。

手動介入の回避: サービスの自動開始により、手動介入の必要がなくなります。システムを再起動するたびに Jar パッケージを手動で実行する必要がないため、エラーのリスクが軽減され、システムの安定性が向上します。

起動シーケンス制御: 自己起動サービスを構成することで、異なるサービス間の起動シーケンスを正確に制御できます。アプリケーションが他のサービスまたはリソースに依存している場合、自己起動サービスに依存関係を設定すると、正しい起動シーケンスが保証されます。

ロギングとエラー処理: 自己開始サービスは、ロギングとエラー処理メカニズムを構成できます。トラブルシューティングや問題の特定を容易にするために、プログラムの出力情報をログ ファイルに記録できます。さらに、サービスの信頼性を確保するために、自動再起動や通知の送信などのアクションを含むエラー処理ポリシーを定義できます。

Jar パッケージを自己起動サービスとして設定することにより、アプリケーションの動作を簡単に管理および制御でき、システムの信頼性と安定性が向上します。これは、システムの起動時に自動的に実行する必要があるバックグラウンド サービス、スケジュールされたタスク、およびアプリケーションに特に当てはまります。

実際の動作

事前準備

サーバーJavaのバージョン番号を確認してください

java -version

ここに画像の説明を挿入します

注: ここでのサーバーが java11 バージョンの場合、以下の jarSysInit.sh スクリプト内の jdk 環境を対応する環境に変更する必要があります。

ステップ

1. 新しい jar パッケージの自己起動ファイルを作成します

sudo vi /etc/init.d/jarSysInit.sh

i キーを押して編集モードに入り、次のように入力します。

# !/bin/bash
##JDK start 配置自己服务器的JDK环境(jkd8还是11)
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
## JDK end
# 有多少个jar就后面加上去就好(这里需要参考自己jenkins的启动脚本注意全局变量$APP_PATH 要换成jar包对应的全路径)
nohup java -Xms1024m -Xmx1024m -jar /home/admin/apps/typing_provider.jar > /home/admin/apps/typing.log 2>&1 &

Esc キーを押して編集モードを終了し、「wq」と入力して保存します。
ここに画像の説明を挿入します
2. サーバーの電源を入れると自動的に実行されるファイルを編集します。

sudo vi /etc/rc.d/rc.local

i キーを押して編集モードに入り、
このファイルの touch /var/lock/subsys/local の下に
次の内容を追加します。

#开机启动jar脚本
/etc/init.d/jarSysInit.sh

ここに画像の説明を挿入します
Esc キーを押して編集モードを終了し、「wq」と入力して保存します。

3. 権限を昇格します。両方のスクリプト ファイルが緑色になり、
パスを切り替えます。

cd /etc/rc.d

権限を昇格します。

sudo chmod 755 /etc/rc.local

アップグレードが成功したかどうかを確認する

ll

ここに画像の説明を挿入します
ディレクトリを切り替える

cd /etc/init.d

権限の昇格

sudo chmod 755 /etc/init.d/jarSysInit.sh

ここに画像の説明を挿入します

要約する

**Jar パッケージが Linux システムの自動起動サービスとして設定されている場合、次のようなコンテンツをさらに充実させることができます。

システム リソース管理: 自動起動サービスを通じて、システムの起動時に CPU、メモリ、ネットワークなどのシステム リソースを合理的に割り当て、管理できます。プログラムのリソース使用量は実際のニーズに基づいて最適化でき、他の重要なタスクやサービスが正常に実行できるようになります。

セキュリティの強化: プログラムを自己開始サービスとして設定すると、特定のユーザー ID または権限を使用してプログラムを実行し、セキュリティを向上させることができます。アクセス権を制限し、許可されたユーザーのみが関連サービスにアクセスして操作できるようにすることができます。これは、不正アクセスや潜在的なセキュリティ侵害を防ぐのに役立ちます。

監視と警報: 自動起動サービスを監視ツールと統合して、プログラムの実行ステータスをリアルタイムで監視できます。適切な監視インジケーターとアラーム ルールを構成することで、クラッシュ、高負荷、メモリ リークなどの異常な状況をタイムリーに検出して対処できます。これにより、タイムリーな対策を講じることができ、サービスの可用性と安定性が保証されます。

自動アップデートとバージョン管理: 自動起動サービスを使用して、プログラムの自動アップデートとバージョン管理を実現できます。新しいバージョンを定期的にチェックし、更新時に新しい Jar パッケージを自動的にダウンロードしてデプロイするポリシーを設定できます。これにより、アプリケーションは常に最新の機能とバグ修正を使用できるようになり、システムのセキュリティと安定性が確保されます。

スケーラビリティと柔軟性: 自己起動サービスにより、必要に応じてアプリケーションを簡単に拡張できます。パラメータ、設定ファイル、プラグインなどを追加して、実際のニーズに応じてカスタマイズできます。これにより、その後のアプリケーションの開発とメンテナンスの柔軟性と拡張性が向上します。

要約すると、Jar パッケージを Linux システムの自己起動サービスとして設定すると、操作プロセスが簡素化され、信頼性と管理効率が向上するだけでなく、リソース管理、セキュリティ強化、監視と警報など、より多くの機能と保証が提供されます。 . 、自動更新と柔軟性など。これらの利点を活用することで、アプリケーションをより適切に管理および実行して、変化するニーズに対応し、優れたユーザー エクスペリエンスを提供できます。**

おすすめ

転載: blog.csdn.net/weixin_45309155/article/details/133268898