systemdにははsysvinitの道のための新機能RHEL7は、過去を変えるシステムの起動と管理のための完全なソリューションを提供するために、システム効率のサービスを改善するために開始することです。
initシステムの異なるバージョン
centos5:SysVの初期化 centos6:成り上がり centos7:systemdに
過去には、次のコマンドでサービスを開始します。
/etc/init.d/nginx開始
若しくは
サービスnginxの開始
A、ユニットの意味
systemdには、集合ユニット、12種類に分け合計と呼ばれるすべてのシステムリソースを、異なるリソースを管理することができます。
サービス単位:システムサービス 対象ユニット:複数の単位からなる群 装置ユニット:ハードウェア ファイルシステムのマウントポイント:マウントユニット 自動マウントユニット:自動マウントポイント パス単位:またはファイルパス スコープ単位:外部プロセスは、システムDによって開始されていません スライス単位:プロセスグループ スナップショット単位:systemdにスナップショットは、スナップショットに戻ってカットすることができます ソケット単位:プロセス間通信ソケット スワップ単位:スワップファイル タイマー単位:タイマ
二、単位の管理よく使用するコマンド(主にサービスのために)
開始からのブート
nginxの有効systemctl
開始から閉じます
systemctl無効にnginxの
サービスステータス
systemctl状態nginxの
サービスを再起動します
systemctl再起動nginxの
サービスを殺します
systemctlキルnginxの
サービスがアクティブになります
systemctlは、アクティブnginxの
ショーは、サービスを開始します
systemctlリスト単位--type =サービス
ディスプレイプロファイルサービス
systemctlリストユニット・ファイル--type =サービス
ロックサービス
systemctlマスクnginxの
ロック解除サービス
systemctlアンマスクnginxの
ヘビーデューティサービスの構成
systemctlデーモンリロード
ビューの依存サービス
systemctlリスト、依存関係のnginx
三、ユニットプロファイル
各ユニットがユニットを開始する方法をシステムに通知プロファイルを有し、systemdにデフォルトではからの/ etc / systemdに/システム/ディレクトリの設定ファイルを読み込み、
しかし、ディレクトリは、ディレクトリは/ usr / libににほとんどのリンクを保存しますディレクトリ/中/にsystemd /システムファイル。
centos7サービススクリプトは、一般的には/ usr / libに/ systemdに、システムに格納され、ユーザーが体系的に区別します。
すなわち、は/ usr / libに/にsystemd /システムと/ usr / libに/にsystemd /ユーザー 。
ユニットプロファイルディレクトリ3があります。
/ libに/にsystemd /システム /実行/ systemdに/システム の/ etc / systemdに/システム
順次ローからハイへの重点3つのディレクトリのファイルは、同じサービス3ヶ所は、高優先度が低い優先順位を上書きしますが装備されています。
いくつかのパラメータは、そのセッションレベルの時点で実行中のプログラムを変更しない限り、/実行/にsystemd /システム・プロセスを動的に、それはほとんど変化しない、実行時にディレクトリ単位のファイルを作成され、ここでしか変更を行います。
四、ユニットのサービス設定
.serviceサフィックスへの各サービスは、通常、3つの部分に分かれ:[単位]、[サービス]、一例として機能するように特別にnginxの、[インストール]:
[単位] 説明= nginxの - 高パフォーマンスのWebサーバー = network.target remote-fs.target nss-lookup.target後 [サービス] タイプ=フォーク PIDFILE =は/ usr / local / nginxの/ログ/ nginx.pid ExecStartPre =は/ usr / local / nginxの/ sbinに/ nginxの-t -c /usr/local/nginx/conf/nginx.conf ExecStart =は/ 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停止 構成処理後の#Restartはサービスハングを避け、systemctl新しいプロセスを聞かせて、殺すことができます 再起動に失敗= RestartSec = 30 [インストール] WantedBy = multi-user.target
1、[単位]ブロック
[部]第一のブロックは、ブロックのコンフィギュレーションファイル、単位に対して定義されたメタデータ、及び他のユニットとの配置関係は、典型的です。
説明:簡単な説明 ドキュメント:ドキュメントの住所 後:依存性、ときにのみサービスユニットは、カスタムサービス依存性プロモーターの後に再起動しました
2、[サービス]ブロック
[サービス]サービスは、ブロックのみこのブロックサービスユニットの唯一のタイプを設定します。
タイプ:プロセスの動作の開始を定義します。それは次の値があります。
サービスがすぐに開始すると思うにsystemd)=シンプル:(デフォルト値を入力します。サービスプロセスがforkしません。サービスは、あなたが他のサービスを開始したい場合は、サービスがソケット作動していない限り、スタートのこのタイプを使用しないでください。 フォーク=タイプ:サービスプロセスのフォークと、親プロセスが正常に起動し、サービスを終了するときだと思うにsystemd。あなたが要件を満たしていないことを確認、この起動モードでない限り、従来のデーモン(デーモン)のために、あなたはスタートのこのタイプを使用することができます。 このスタートアップの種類は、メインプロセスにsystemdサービスを追跡することができるようにするために、= pidファイルを指定する必要があります使用してください。 =ワンショットを入力します。このオプションは、タスクを実行するためにのみ適用され、その後、すぐにサービスを終了します。セットRemainAfterExitする必要があるかもしれ= yesのサービスがまだ現役とみなされた後にsystemdプロセスが終了します。 TYPE =通知:それは準備ができているのと同じ、シンプルでタイプ=が、サービスに合意にsystemdに信号を送ります。この通知を達成するためにlibsystemd-daemon.soにより提供されます。 = DBUSを入力:指定BusNameはDバス・システム・バス上に現れるこの起動モードは、サービスの準備ができていると思うにsystemd場合。 タイプは=アイドル:systemdには、治療が完了した後にすべてのタスクを待ちます、ユニットのアイドルタイプを実行するために始めました。タイプ=シンプルで他の同様の挙動。
その他のオプション:
ExecStart:コマンドサービスを開始します ExecStartPre:コマンドがサービスを開始する前に実行 ExecStartPost:コマンドは、サービス開始後に実行されます ExecReload:サービスの実行を再開するためのコマンド ExecStop:サービスの時にアウトを実行するためのコマンド ExecStopPost:コマンドがサービスを停止した後に実行 RestartSec:秒数は、自動的にサービスインターバルを再起動します 再起動:再起動が自動的に可能な値は、オン成功、上の失敗、オン異常、オンアボート、上・ウォッチドッグ、(常に再起動します)常に含めるどのような状況のサービス定義 TimeoutSec:サービスにsystemdを停止する前に待機する秒数を定義します 環境:指定した環境変数 PIDFILE:PIDファイルのパス PrivateTmp:真の表現はサービスに別々の一時領域を割り当て ユーザー:コマンドを実行するユーザー グループ:コマンドのグループの実行
3、[インストール]ブロック
[インストール]ブロックが起動し、起動するかどうかをする方法を定義するために使用されます。
WantedBy:その値が1つまたは複数のターゲットであり、現在のユニットは、ターゲットディレクトリ名+拡張構成サブディレクトリ.wantsへのシンボリックリンクは/ etc /にsystemd /システムに(有効に)活性化 RequiredByは:その値が1つまたは複数のターゲットである、現在のユニットは、標的+のディレクトリシステムの等/ systemdにサブディレクトリ名のサフィックス構成/内を.required /シンボリックリンクに(有効に)活性化 別名:現在のユニットは、別名を開始するために使用することができます また、現在の時間ユニットの活性化(イネーブル)、同時に他のユニットで活性化されます
五、ターゲットコンセプト
ターゲットユニットは、多くの関連するユニットを含むグループです。私はターゲットを起動すると、systemdには、すべてのユニットの内側に開始されます。
伝統のinit起動モード内では、ロールを持つコンセプトランレベルは、ターゲットが非常に似ています。違いは、ランレベルは相互に排他的である、ある、それは不可能ランレベルの複数同時スタートですが、より多くのターゲットを同時に起動することができます。
一般的に使用されるコマンドをターゲット:
内のすべてのユニットのターゲットを参照してください。 systemctlリストユニット・ファイル--type =ターゲット デフォルトの実行レベルでのデフォルトターゲットを、確認します。`runlevel`の古い順に対応 systemctl GET-デフォルト デフォルトのターゲットを設定します systemctlセットデフォルトmulti-user.target 対象ユニットの下を見て systemctlリスト、依存関係multi-user.target ターゲットを切り替え、単位のない新しいターゲットが停止されます systemctl分離株multi-user.target
ターゲットとランレベルの対応の間:
SysVの実行レベル | systemdにターゲット | 注記 |
0 | runlevel0.target、poweroff.target | 割込みシステム(停止) |
1、S、単一 | runlevel1.target、rescue.target | シングルユーザーモード |
2、4 | runlevel4.target、multi-user.target | ユーザ定義の動作レベルは、一般に、レベル3として識別されます。 |
3 | multi-user.target | マルチユーザ、非グラフィカルインターフェース。ユーザーは、端末やネットワーク経由でログインすることができます。 |
5 | graphical.target | マルチユーザ、グラフィカルインタフェース。レベル3のサービスは継承され、およびグラフィカル・インターフェース・サービスを開始しています。 |
6 | reboot.target | 再起動 |
緊急 | emergency.target | 緊急モード(緊急シェル) |
次のようにターゲットとinitプロセスの主な違いは次のとおりです。
ターゲット・デフォルトを置換され(IN / etc / inittabファイル提供)ランレベルをデフォルトの位置は、/etc/systemd/system/default.target通常シンボリックgraphical.target(GUI)へのリンクまたはmulti-user.target(ありますマルチユーザコマンドライン)
場所スタートアップスクリプト:旧/etc/init.dディレクトリ、今や/ libに/にsystemd /システムに保存されている(など/etc/rc3.d,/etc/rc5.d、など)さまざまなランレベルのディレクトリへのシンボリックリンク、そして、/ etc /にsystemd / systemディレクトリ。
プロファイルの場所:設定ファイルがある前のinitプロセスに/ etc / inittabに、さまざまなサービスの設定ファイルは、/ etc /のsysconfigディレクトリに格納されています。元の設定を上書きすることができ、構成ファイルは、現在で/修正/などのディレクトリにsystemd / libに/にsystemdディレクトリに格納されています。
第六に、ログ管理
すべてのユニットの起動ログのsystemdに一元管理。Journalctl唯一のコマンドは、すべてのログ(カーネルログやアプリケーションログ)を表示します。ログインプロファイル/etc/systemd/journald.conf。
すべてのログを表示する(デフォルトのディスプレイはこのすべてが始まっログ)
journalctl
若しくは
journalctl -b
カーネルログを表示します
journalctl -k
指定された時間のログを確認し
--sinceことにより、およびオプション--until、あなたが指定した条件の表示の前に、またはログの間の後、任意の時間制限を絞り込むことができます。
現在のログ10:00ビュー2020年1月9日
journalctl --since = "2020年1月9日午前十時00分00秒"
期間の範囲内でログのクエリ。
journalctl --since = "2020年1月9日午前十時00分00秒" --until = "2020年1月9日12時00分00秒"
また、ジャーナル部を名前と相対値を略すことが理解されます。例:「今」「昨日」、「今日」、「明日」、および使用することもできる、などの「 - 」または「+」の設定値と比較し、または、前の表現を使用「メンバー前に。」
昨日のログをチェックしてください
journalctl -since昨日
1時間前にログビューア午前10時
"1時間前" --until午前10時00 --since journalctl
指定したサービスログを確認します
journalctl -u sshd.service --since今日
以来、私たちは、クエリのプロセスIDを実装することができますので、もし、複数のサブプロセスが含まれているいくつかのサービス
journalctl _PID = 6870 --since今日
時には我々は、使用_UIDまたは_GIDを必要とし、特定のユーザーまたはグループからのすべてのログエントリを表示することができます。
あなたは(ID -uユーザ名)を介してユーザのUIDを表示することができます
journalctl _UID = 1000 --since今日
ローリングログの最新のリアルタイムサービス
journalctl -u -f sshd.service
行の最新のログ指定された数を表示します
journalctl -u sshd.service -n 20
プレスディスプレイは、ログレベルログ
EMERG:0
。1:アラート
2:クリティカル
3:ERR
。4:警告
5:注意
。6:情報
7:デバッグ
journalctl -p情報-u sshd.service
丁合い出力のデフォルトのログには、--no-ページャのページを追加しない場合
journalctl -u sshd.service --no-ページャ
出力ログにJSON形式、読みやすく
journalctl -u sshd.service -o JSON-かわいいです
表示するログディスクスペースが占有します
journalctl --disk-使い方
ログの占有スペースを設定します
journalctl --vacuumサイズ= 1G
保存されたログ時間の設定
journalctl --vacuum-時間= 1ヶ月
参考文献:
http://www.jinbuguo.com/systemd/systemd.html https://wiki.archlinux.org/index.php/Systemd https://ivanzz1001.github.io/records/post/linuxops/2018/03/09/linux-systemctl