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 つのモード

推薦する

MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法

1. 1列を変更する 学生の更新、都市c s.city_name = c.name を設定します こ...

MySQL インデックスクエリ最適化スキルを習得するための記事

序文この記事では、DBA がいないチームが参考にできるように、MySQL の一般的な使用に関するヒン...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

Dockerコンテナの原理の分析

目次01 コンテナの本質とは何か? 02 Cgroupテクノロジーと名前空間テクノロジーの概要03 ...

MySQL でタイムゾーンを表示および変更する方法

今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...

Linux 上の Tomcat で MySQL にデータを挿入するときに中国語の文字化けが発生する問題を解決する

1. 問題Windows 上の Eclipse を使用して開発されたプロジェクトは Windows ...

CSS の Flex レイアウトを使用してシンプルな縦棒グラフを作成する方法

以下は、Flex レイアウトを使用した棒グラフです。 HTML: <div class=&qu...

Linux での Makefile の書き方と使い方の詳細な説明

目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...

ホストNginx + Docker WordPress Mysqlを設定するための詳細な手順

環境Linux 3.10.0-693.el7.x86_64 Docker バージョン 18.09.0...

MySQLデータベースの基本構文と操作

MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...

Linux のインスタンスにパブリック IP アドレスを割り当てる方法

説明するこのインターフェースを呼び出すときは、次の点に注意する必要があります。パブリック IP アド...

MYSQLの主キー制約とユニーク制約の違いについて簡単に説明します。

目次主キー制約ユニーク制約主キー制約PRIMARY KRY 主キーは一意です。テーブルには主キーを ...

判定条件を使用してCSSファイルをインポートする

解決策 1: HEAD に次のコードを挿入するなど、HTML ドキュメントで条件付きインポートを使用...

CSS3の新しい背景プロパティの詳細な説明

これまで、CSS の背景の属性には、color、image、repeat、attachment、po...

ReactのEffectListの簡単な分析

目次EffectList コレクション最初のレンダリング時のEffectList EffectLis...