1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

仮想マシンのコマンドとsystemd・SysVinitの違いについて(自分用メモ

Posted at

仮想マシンを一時停止
virsh suspend {ドメイン名|ID|UUID}

仮想マシンを再開
virsh resume {ドメイン名|ID|UUID}

docker run [オプション] イメージ名

例)Dockerイメージ「ubuntu」を使って新規コンテナ「ubuntutest」を作成・起動して、コンテナの標準入出力に接続する

docker run -it --name ubuntutest ubuntu

-iオプション(キーボードなどからの標準入力を受け付ける)と、-tオプション(疑似端末を割り当てる)を使用することで、起動したコンテナの標準出力に接続(アタッチ)できます。
また、--nameオプションで任意のコンテナ名を付けられます。コンテナ名の指定が無い場合はランダムな文字列が生成されコンテナ名となります。

上記の例ではexitコマンドで抜けてコンテナが停止していますが、Ctrlキーを押しながらP、Qを続けて押すと(Ctrl+P、Ctrl+Q)、コンテナを停止せずに一時的に抜けることができます(デタッチ)。

CPUが仮想化支援機能をサポートしているかどうかを調べるには、「/proc/cpuinfo」のflagsにおいて"vmx"(Intel VT)または"svm"(AMD-V)という値があるかどうかを確認します。
例)Intel VT-xの場合
egrep ‘(vmx|sxm)’ /proc/cpuinfo

「/etc/inittab」を設定ファイルとして使用する従来のinitプログラムは「SysVinit」と呼ばれるものです。
Upstartやsystemdは、従来のSysVinitと比べてシステム起動時の初期化作業が高速化されています。

Upstartは「/etc/event.d/rc-default」ファイルの「telinit 2」の部分を編集することでデフォルトのランレベルを設定できます。

systemd
・Unitという単位で管理される
・スクリプトを実行できない
・cgroupsというLinuxカーネルの機能によってプロセスのリソースを管理できる
・Upstartと同様に、各サービスを並列起動することができる。そのため、順次起動していくSysVinitに比べて高速なシステム起動や停止が行えます。

SysVinit
・スクリプトを実行できる
・プロセスをPIDで管理

UpstartはSysVinitと互換性があるため、「/etc/inittab」ファイルを新規に作成し、先述のSysVinitの場合と同じように記述することでデフォルトのランレベルを設定することもできます。その場合、「/etc/inittab」ファイルのランレベルが優先されます。

systemdはSysVinitを置き換える新しいinitの仕組み。

systemdで扱う処理はUnitという単位で管理します。Unitは設定ファイルであり、Unitの設定に従ってsystemd自体が処理を実行します。SysVinitのようにスクリプトを実行するわけではありません。
Unitには各機能ごとに拡張子が割り当てられており、拡張子を見ることでどういった機能のためのUnitかが判別できるようになっています。

また、SysVinitではプロセスをPIDによって管理していましたが、systemdではcgroupsというLinuxカーネルの機能によってプロセスのリソースを管理できます。

systemdはUpstartと同様、各サービスを並列起動することができます。そのため、順次起動していくSysVinitに比べて高速なシステム起動や停止が行えます。
システム起動時に最初に実行されるUnitは「/etc/systemd/system/default.target」。「default.target」をSysVinitでのランレベルに相当するUnitへのシンボリックリンクとして作成することで、期待するサービス群を起動できるようになります。

シンボリックリンクとは、Windowsでのショートカットのようなもので、元ファイルの場所を指し示すリンクの事。シンボリックリンクが持っている情報は「元ファイル(ディレクトリ)がどこにあるのか」というパス情報のみです。
シンボリックリンクを作成するにはlnコマンドに「-s」オプションを付加して作成します。(書式:ln -s 元ファイル リンクファイル)

ターゲットは「/lib/systemd/system」配下に格納されています。また、SysVinitとの関連がわかりやすいように、runlevel0.target〜runlevel6.targetまでのシンボリックリンクも用意されています。

各サービスの稼働状況や起動設定を管理するにはsystemctlコマンドを使用します。systemctlコマンドの書式

systemctl サブコマンド [ Unit名 ]
※Unit名に拡張子がない場合、.serviceの拡張子を持つUnitが指定されたものとみなされます

自動起動設定がどのターゲットに対して有効となるかは、各Unit定義ファイルに記述されています。httpd.serviceファイルの中では、以下のとおりmulti-user.targetで有効となるよう[WantedBy]項目に記述されていることがわかります。

サービスの自動起動を無効にすると、作成されたシンボリックリンクが自動で削除されます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?