Linux に起動方法を追加する (サービス/スクリプト)

Linux に起動方法を追加する (サービス/スクリプト)

システムの起動時に読み込む必要がある設定ファイル

/etc/profile、/root/.bash_profile
/etc/bashrc、/root/.bashrc
/etc/profile.d/*.sh、/etc/profile.d/lang.sh
/etc/sysconfig/i18n、/etc/rc.local (/etc/rc.d/rc.local)

1. ブートスタートアップファイルを変更する: /etc/rc.local (または /etc/rc.d/rc.local)

# 1. rc.localファイルを編集する [root@localhost ~]# vi /etc/rc.local

# 2. rc.local ファイルを変更し、exit 0 の前に次のコマンドを追加します。保存して終了します。
/etc/init.d/mysqld を起動します #mysql を起動します/etc/init.d/nginx を起動します #nginx を起動します supervisord -c /etc/supervisor/supervisord.conf # supervisord を起動します/bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null

# 3. 最後に、rc.local ファイルの実行権限を変更します [root@localhost ~]# chmod +x /etc/rc.local
[root@localhost ~]# chmod 755 /etc/rc.local

2. 自分でシェルスクリプトを書く

記述したスクリプト (.sh ファイル) を /etc/profile.d/ ディレクトリに配置します。このディレクトリ内のすべてのシェル スクリプトは、システムの起動後に自動的に実行されます。

3. chkconfigコマンドで設定する

# 1. (スクリプト) 起動ファイルを /etc/init.d/ または /etc/rc.d/init.d/ ディレクトリに移動します。 (前者は後者へのソフトリンクです)
mv /www/wwwroot/test.sh /etc/rc.d/init.d

# 2. 起動ファイルの前に次の 3 行のコードを必ず追加してください。そうしないと、chkconfig がサポートされていないというメッセージが表示されます。
#!/bin/sh はシステムにシェルを使用するように指示するため、すべてのシェル スクリプトは次のようになります。#chkconfig: 35 20 80 はそれぞれ実行レベル、起動優先度、シャットダウン優先度を表します。このコード行は #description: http server である必要があります。好きなように使用できます。 ! !このコード行は /bin/echo $(/bin/date +%F_%T) >> /tmp/test.log である必要があります。

# 3. スクリプトに実行権限を追加する chmod +x /etc/rc.d/init.d/test.sh

# 4. 自動スタートアップ プロジェクトにスクリプトを追加します。 chkconfig に追加し、起動時に自動的に開始します。
[root@localhost ~]# cd /etc/rc.d/init.d
[root@localhost ~]# chkconfig --add test.sh
[root@localhost ~]# chkconfig test.sh オン

# 5. ブートをオフにする [root@localhost ~]# chkconfig test.sh off

# 6. chkconfig管理からtest.shを削除する
[root@localhost ~]# chkconfig --del test.sh

# 7. chkconfig 管理を表示する [root@localhost ~]# chkconfig --list test.sh

4. サービスファイルをカスタマイズし、システムサービスに追加し、Systemctl を通じて管理する

1. サービスファイルを書き込む: nginx.service、redis.service、supervisord.service など

[Unit]: サービスの説明 説明: サービスの説明 After: サービスのカテゴリの説明 [Service] サービス実行パラメータの設定 Type=forking はバックグラウンド実行の形式です ExecStart はサービスの特定の実行コマンドです ExecReload はサービスの再起動コマンドです ExecStop はサービスの停止コマンドです PrivateTmp=True はサービスに独立した一時領域を割り当てることを意味します 注: すべての開始、再起動、および停止コマンドでは絶対パスを使用する必要があります [Install] サービスのインストールに関連する設定。マルチユーザーに設定できます WantedBy=multi-user.target 

2. ファイルは 754 の権限でディレクトリに保存されます。ディレクトリ パス: /usr/lib/systemd/system。たとえば、上記の supervisord.service ファイルはこのディレクトリの下に配置されます。

[root@localhost ~]# cat /usr/lib/systemd/system/nginx.service
[root@localhost ~]# cat /usr/lib/systemd/system/supervisord.service

3. 起動時にシステムが自動的に起動するように設定します(任意のディレクトリで実行します)。起動コマンドの実行時にエラーが発生した場合は、以下を実行してください: systemctl daemon-reload

自動起動を設定する [root@localhost ~]# systemctl enable nginx.service    
[root@localhost ~]# systemctl enable supervisord

自動起動を停止する [root@localhost ~]# systemctl enable nginx.service
[root@localhost ~]# systemctl は supervisord を無効にする

起動時に起動されているか確認する [root@localhost ~]# systemctl is-enabled nginx
[root@localhost ~]# systemctl is-enabled supervisord

4. その他のコマンド

nginx サービスを開始します [root@localhost ~]# systemctl start nginx.service

nginx サービスを停止します [root@localhost ~]# systemctl start nginx.service

nginx サービスを再起動します [root@localhost ~]# systemctl restart nginx.service

nginx サービスの現在のステータスを表示します [root@localhost ~]# systemctl status nginx.service

開始されているすべてのサービスを表示します [root@localhost ~]# systemctl list-units --type=service

5. サービスファイルの例:

# supervisord.service プロセス管理サービスファイル [Unit]
説明=プロセス監視および制御デーモン # 内容を自分で定義します: 説明=スーパーバイザデーモン
後=rc-local.service nss-user-lookup.target

[サービス]
タイプ=フォーク
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop= /usr/bin/supervisorctl シャットダウン 
ExecReload=/usr/bin/supervisorctl リロード
再起動=失敗時
再起動秒数=42秒
キルモード=プロセス 

[インストール]
WantedBy=マルチユーザー.ターゲット

# nginx.service サービスファイル [Unit]
説明=nginx - 高性能ウェブサーバー
後=network.target remote-fs.target nss-lookup.target

[サービス]
タイプ=フォーク
実行開始=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s 再ロード
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[インストール]
WantedBy=マルチユーザー.ターゲット

# redis.service サービスファイル [Unit]
説明=Redis
後=network.target remote-fs.target nss-lookup.target

[サービス]
タイプ=フォーク
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=kill -INT `cat /tmp/redis.pid`
ユーザー=www
グループ=www

[インストール]
WantedBy=マルチユーザー.ターゲット

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux サービスを自動的に起動する 3 つの方法
  • Linux で起動時に Oracle を自動的に起動するように設定する方法
  • LinuxでのOracle起動スクリプトとその起動
  • Oracle サービスの起動および停止スクリプトと Linux でのブートの自動起動
  • Linux で Redis の起動を設定する方法
  • Linux 起動時にノードマネージャを起動する手順
  • Linux での Redis のパスワード設定と自動起動
  • Linuxのブートプロセスの詳細な説明
  • Linux 起動時に Redis サービスを自動的に開始する方法
  • Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

<<:  vue $setは配列コレクションオブジェクトへの値の割り当てを実装します

>>:  Oracle の開閉の 4 つのモード

推薦する

CSS3 のボックス サイズ設定 (コンテンツ ボックスとボーダー ボックス) の詳細な説明

CSS3 のボックス サイズ設定 (content-box と border-box) CSS3 の...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...

Viteプロジェクトを作成する手順

目次序文yarn create は何をしますか?ソースコード分析プロジェクトの依存関係テンプレート構...

Win10 に Tomcat サーバーをインストールし、環境変数を構成する詳細なチュートリアル (画像とテキスト)

目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...

MySQL における SQL ページングクエリのいくつかの実装方法と利点と欠点

【SQL】SQLページングクエリの概要開発プロセスではページングが必要になることがよくあります。今日...

vue + Electron でデスクトップ アプリケーションを作成するためのサンプル コード

1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...

MySQLクエリキャッシュに関するヒント

目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...

div の高さをブラウザの高さに合わせて調整する方法

この古くからある疑問は、数え切れないほどのフロントエンド開発者やバックエンドプログラマーを悩ませてき...

MySQL における ${param} と #{param} の違い

${param}によって渡されるパラメータは、テーブル名やフィールド名を渡すなど、SQL文の一部と...

時間範囲効果を実現するためのJavaScript

この記事では、時間範囲効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...

jQueryはネストされたタブ機能を実装します

この記事では、ネストされたタブ機能を実装するためのjQueryの具体的なコードを参考までに紹介します...

Jenkins を通じて None のイメージを定期的にクリーンアップする方法

序文継続的なコード配信のプロセスで、Jenkins を利用して Docker イメージを作成すると、...

React で setInterval 関数を使用する例

この記事はWindows 10のシステム環境をベースに、Reactの学習と使用について説明しています...

Reactは二次連結(左右連結)を実現する

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...