chkconfig および systemctl コマンドを使用して Linux サービスを有効または無効にする方法

chkconfig および systemctl コマンドを使用して Linux サービスを有効または無効にする方法

これは Linux 管理者にとって重要な (そして素晴らしい) トピックなので、誰もが Linux をより効果的に使用する方法を知って実践する必要があります。

Linux では、サービスとデーモンを含むパッケージをインストールするたびに、デフォルトでそれらのサービスの初期化スクリプトと systemd スクリプトが追加されますが、その時点では有効になっていません。

これらのサービスを手動でオンまたはオフにする必要があります。 Linux には今でも使用されているよく知られた init システムが 3 つあります。

init システムとは何ですか?

Linux/Unix ベースのオペレーティング システムでは、init (initialization の略) はカーネル ブート システムの起動プロセス中に最初に開始されるプロセスです。

init のプロセス ID (pid) は 1 で、システムがシャットダウンされるまでバックグラウンドで実行されます。

init はまず、/etc/inittab ファイルに基づいて Linux が実行されているレベルを決定し、次に実行レベルに基づいて他のすべてのプロセスとアプリケーションをバックグラウンドで起動します。

BIOS、MBR、GRUB、およびカーネル プログラムは、init を開始する前に、Linux ブート プロセスの一部として動作を開始します。

Linux で使用できる実行レベルは次のとおりです (実行レベルは 0 から 6 までの 7 つあります)。

0: シャットダウン
1: シングルユーザーモード
2: マルチユーザーモード(NFSなし)
3: フルマルチユーザーモード
4: システムは使用されていません
5: グラフィカルインターフェースモード
6: 再起動

Linux システムで最も一般的に使用される 3 つの init システムは次のとおりです。

  • システム V (Sys V)
  • アップスタート
  • システム

System V (Sys V) とは何ですか?

System V (Sys V) は、Unix ライクなシステムの最初の伝統的な init システムです。 init は、カーネル ブート システムの起動プロセス中に最初に起動されるプログラムです。これは、すべてのプログラムの親プロセスです。

ほとんどの Linux ディストリビューションは、もともと System V (Sys V) と呼ばれる従来の init システムを使用していました。過去数年間にわたり、launchd、Service Management Facility、systemd、Upstart など、標準ディストリビューションの設計上の制限に対処するためにいくつかの init システムがリリースされてきました。

しかし、systemd は従来の SysV init システムに代わるものとして、いくつかの主要な Linux ディストリビューションに採用されています。

Upstart とは何ですか?

Upstart は、システムのブート プロセス中にタスクとサービスを開始し、システムの実行中にそれらを監視し、システムのシャットダウン時にそれらをシャットダウンする /sbin/init デーモンのイベント ベースの代替品です。

もともと Ubuntu 用に設計されましたが、古い System-V を置き換えるために他のすべての Linux システムにも完全に導入できます。

Upstart は、Ubuntu 9.10 から Ubuntu 14.10 および RHEL 6 ベースのシステムで使用され、その後 systemd に置き換えられました。

systemd とは何ですか?

systemd は、従来の SysV init システムに代わる、すべての主要な Linux ディストリビューションで使用される新しい init システムおよびシステム マネージャーです。

systemd は SysV および LSB init スクリプトと互換性があります。これは SysV init システムを直接置き換えるものです。 systemd はカーネルによって最初に起動されるプログラムであり、その PID は 1 です。

systemd はすべてのプログラムの親プロセスであり、Fedora 15 は upstart ではなく systemd を使用する最初のディストリビューションです。 systemctl はコマンドラインで使用され、(開始、再起動、シャットダウン、有効化、無効化、リロード、ステータスなど) systemd デーモン/サービスを管理するための主要なツールです。

systemd は、bash スクリプト (SysVinit が使用) の代わりに .service ファイルを使用します。 systemd はすべてのデーモンを順番に cgroup に追加します。/cgroup/systemd ファイルを参照すると、システム階層を表示できます。

chkconfig コマンドを使用してブート サービスを有効または無効にする方法は?

chkconfig ユーティリティは、指定された実行レベルで選択したサービスを開始したり、利用可能なすべてのサービスとその現在の設定を一覧表示したりできるコマンドライン ツールです。

さらに、起動時にサービスを有効または無効にすることもできます。このコマンドを実行するには、スーパー管理者権限 (root または sudo) を持っていることが前提条件です。

すべてのサービススクリプトは/etc/rd.d/init.dファイルにあります。

ランレベル内のすべてのサービスを一覧表示する方法

--list オプションは、すべてのサービスとその現在のステータス (サービスが有効または無効になっているランレベル) を表示します。

# chkconfig --list
ネットワークマネージャー 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
abrt-ccpp 0:オフ 1:オフ 2:オフ 3:オン 4:オフ 5:オン 6:オフ
0:オフ 1:オフ 2:オフ 3:オン 4:オフ 5:オン 6:オフ
acpid 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ
監査 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ

指定されたサービスのステータスを表示する方法

実行レベルでサービスのステータスを確認する場合は、次の形式を使用して必要なサービスと一致させることができます。

たとえば、実行レベルでauditdサービスのステータスを確認したい場合

# chkconfig --list| grep 監査d
監査 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ

特定のランレベルでサービスを有効にする方法

指定された実行レベルでサービスを有効にするには、--level パラメータを使用します。以下は、実行レベル 3 および 5 で httpd サービスを有効にする方法を示しています。

# chkconfig --level 35 httpd オン

特定のランレベルでサービスを無効にする方法

また、指定した実行レベルでサービスを無効にするには、--level パラメータを使用します。以下は、実行レベル 3 および実行レベル 5 で httpd サービスを無効にする方法を示しています。

# chkconfig --level 35 httpd をオフにする

スタートアップリストに新しいサービスを追加する方法

-–add パラメータを使用すると、スタートアップ リストに新しいサービスを追加できます。デフォルトでは、新しく追加されたサービスは実行レベル 2、3、4、5 で自動的に開始されます。

# chkconfig --nagiosを追加します

スタートアップリストからサービスを削除する方法

--del パラメータを使用して、スタートアップ リストからサービスを削除できます。以下は、スタートアップ リストから Nagios サービスを削除する方法を示しています。

# chkconfig --del nagios

systemctl コマンドを使用して自動起動サービスを有効または無効にする方法を教えてください。

systemctl は、(開始、再起動、停止、有効化、無効化、再ロード、ステータスなど) systemd デーモン/サービスを管理するために使用されるコマンドライン ツールです。

すべてのサービスによって作成されるユニット ファイルは、/etc/systemd/system/ にあります。

すべてのサービスを一覧表示する方法

すべてのサービス(有効と無効の両方)を一覧表示するには、次のコマンドを使用します。

# systemctl ユニットファイルをリストします --type=service
ユニットファイルの状態
arp-ethers.service が無効です
監査サービスが有効
autovt@.service が有効
blk-availability.service が無効です
brandbot.service 静的
chrony-dnssrv@.service 静的
chrony-wait.service が無効です
chronyd.service が有効
cloud-config.service が有効
cloud-final.service が有効
cloud-init-local.service が有効
cloud-init.service が有効
console-getty.service が無効になっています
console-shell.service が無効になっています
コンテナ-getty@.service 静的
cpupower.service が無効です
crond.service が有効
。
。
150 個のユニット ファイルがリストされています。

正規表現を使用して、表示するサービスの現在のステータスを一致させるには、次の形式を使用します。以下では、systemctl コマンドを使用して httpd サービスのステータスを表示します。

# systemctl list-unit-files --type=service | grep httpd
httpd.service が無効です

起動時に指定したサービスを自動的に開始する方法

特定のサービスを有効にするには、次の形式の systemctl コマンドを使用します。サービスを有効にすると、以下に示すようにシンボリック リンクが作成されます。

# systemctl で httpd を有効にする
/etc/systemd/system/multi-user.target.wants/httpd.service から /usr/lib/systemd/system/httpd.service へのシンボリックリンクを作成しました。

次のコマンドを実行して、サービスが有効になっていることを確認します。

# systemctl が有効になっている httpd
有効

特定のサービスを無効にする方法

次のコマンドを実行してサービスを無効にすると、サービスを有効にしたときに作成されたシンボリック リンクが削除されます。

# systemctl は httpd を無効にする
シンボリックリンク /etc/systemd/system/multi-user.target.wants/httpd.service を削除しました。

次のコマンドを実行して、サービスが無効になっているかどうかを確認します。

# systemctl が有効になっている httpd
無効

システムの現在の実行レベルを表示する方法

システムの現在のランレベルを確認するには、systemctl コマンドを使用します。runlevel コマンドは systemd でも機能しますが、runlevel は systemd の歴史的な概念です。したがって、すべてに対して systemctl コマンドを使用することをお勧めします。

現在はランレベル 3 であり、これは以下に示す multi-user.target に相当します。

# systemctl list-units --type=target
ユニットロードアクティブサブ説明
basic.target が読み込まれました アクティブ アクティブ 基本システム
cloud-config.target がロードされました アクティブ アクティブ Cloud-config の可用性
cryptsetup.target がロードされました アクティブ アクティブ ローカル暗号化ボリューム
getty.target が読み込まれました アクティブ アクティブ ログインプロンプト
local-fs-pre.target がロードされました アクティブ アクティブ ローカル ファイル システム (Pre)
local-fs.target がロードされました アクティブ アクティブ ローカルファイルシステム
multi-user.target が読み込まれました アクティブ アクティブ マルチユーザーシステム
network-online.target がロードされました アクティブ アクティブ ネットワークはオンラインです
network-pre.target がロードされました アクティブ アクティブ ネットワーク (Pre)
network.target が読み込まれました アクティブ アクティブ ネットワーク
paths.target が読み込まれました アクティブ アクティブ パス
remote-fs.target がロードされました アクティブ アクティブ リモート ファイル システム
slices.target が読み込まれました アクティブ アクティブ スライス
sockets.target がロードされました アクティブ アクティブ ソケット
swap.target が読み込まれました アクティブ アクティブ スワップ
sysinit.target がロードされました アクティブ アクティブ システム初期化
timers.target が読み込まれました アクティブ アクティブ タイマー

要約する

上記は、chkconfig および systemctl コマンドを使用して Linux サービスを有効または無効にする方法を紹介しました。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Linux での chkconfig コマンドの詳細な説明
  • Linux コマンド chkconfig コマンドの使用方法の詳細な説明
  • Linux chkconfig コマンドの使用

<<:  JSはリクエストディスパッチャーを実装する

>>:  CentOS7 64ビットインストールmysqlグラフィックチュートリアル

推薦する

Zabbix の psk 暗号化と zabbix_get 値の組み合わせ

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbix...

Vueはカルーセルのフレームレート再生を実装します

この記事の例では、カルーセルのフレームレート再生を実現するためのVueの具体的なコードを参考までに共...

Windows で MySQL データベースを別のディスクに移動する

序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...

CSS のサイズ単位についての簡単な説明

ブラウザの互換性はどんどん良くなってきています。モバイル端末は基本的にすべてWebKitベースです。...

Dockerのインストール方法とDockerの4つのネットワークモードの詳細説明

1. Dockerをインストールするyum -y install docker-ioインストールが完...

TypeScript におけるジェネリックケースの詳細な説明

ジェネリックの定義 // 要件 1: ジェネリックは指定されていないデータ型をサポートできるため、渡...

mysql-8.0.19-winx64 をインストールしてログインするための初心者向けチュートリアル (初心者必読)

目次1. インストールパッケージ(64ビット)をダウンロードする2. MySQLデータベースをインス...

MySQL 5.7.17 winx64 のインストールと設定のグラフィックチュートリアル

MySQL のインストールに関する以前のメモを要約して、皆さんと共有しました。ステップ 1: mys...

JavaScript BOM ロケーション オブジェクト + ナビゲーター オブジェクト + 履歴オブジェクト

目次1. 場所オブジェクト1. URL 2. 場所オブジェクトのプロパティ3. ロケーションオブジェ...

面接官はReactのライフサイクルについてよく質問します

ReactライフサイクルReactのライフサイクルを理解するのに役立つ2つの図React ライフサイ...

HTML テーブル マークアップ チュートリアル (10): セル パディング属性 CELLPADDING

セルのパディングは、セルの内容と境界線の間の距離です。基本的な構文<TABLE セルパディング...

DockerとVMwareの競合を解決する

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

Vue コンポーネントの切り替え、動的コ​​ンポーネント、コンポーネントのキャッシュについて

目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...

Tomcat ソースコード起動コンソールの中国語文字化けのデバッグプロセス記録

問題を見つける今日はTomcatのソースコードを勉強するつもりなので、公式サイトからTomcatのソ...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...