コース一覧
LinuC レベル1(LPIC-1対応)対策
サービス管理の試験形式

LinuC レベル1(LPIC-1対応)対策

ブートとsystemd、パッケージ管理(APT/RPM両系統)、コマンドとviの操作、ファイルシステム、シェルスクリプト、ユーザー管理とセキュリティ、ネットワークまで、LinuC レベル1(LPIC-1対応)の全出題範囲を、毎レッスン実際にコマンドを打って確かめながら学べる対策コースです。ブラウザの中で本物の Debian 12 が動いていて、62レッスンのうち36本は読むだけで終わらず、自分の手でコマンドを打った結果で採点されます。Linux入門を修了した方を対象としています。101・102それぞれの模試60問で分野別の弱点を洗い出し、直前チェックで暗記事項を固めてから本番に臨めます。

1
試験ガイダンス
01. LinuC/LPICとは15分
02. LinuCとLPICの選び方15分
03. 学習計画15分
04. 出題形式を体験15分
2
101 ブートとアーキテクチャ
01. ブートの流れ18分
02. GRUB15分
03. systemdとターゲット18分
04. ハードウェア情報18分
05. カーネルモジュール18分
06. 過去問 アーキテクチャ15分
3
101 パッケージ管理
01. Debian系パッケージ18分
02. RPM系パッケージ15分
03. 両系統の対応表15分
04. リポジトリ管理18分
05. 共有ライブラリ18分
06. 過去問 パッケージ管理15分
4
101 GNU/Unixコマンド
01. ファイル操作の試験オプション18分
02. テキスト処理18分
03. ストリームとリダイレクト18分
04. プロセス監視18分
05. 優先度18分
06. grepと正規表現18分
07. viの操作15分
08. 過去問 コマンド15分
5
101 ファイルシステム
01. パーティション15分
02. 作成とマウント18分
03. fstabとUUID18分
04. パーミッションとリンク18分
05. 容量とクォータ18分
06. findとlocate18分
07. 過去問 ファイルシステム15分
6
102 シェルとスクリプト
01. シェル環境18分
02. testと条件式18分
03. スクリプトの制御18分
04. cronとat15分
05. systemdタイマー18分
06. 過去問 シェル15分
7
102 ユーザーとセキュリティ
01. passwdとshadow18分
02. ユーザー管理コマンド18分
03. suとsudo18分
04. 特殊パーミッション18分
05. ホストのセキュリティ18分
06. SSHとGPG18分
07. 過去問 ユーザーとセキュリティ15分
8
102 ネットワーク
01. TCP/IPとウェルノウンポート18分
02. アドレス設定18分
03. ルーティング18分
04. 名前解決の設定18分
05. 疎通トラブルシュート18分
06. 過去問 ネットワーク15分
9
102 システム管理
01. 時刻とNTP15分
02. ロケールと文字コード18分
03. ログ管理18分
04. サービス管理の試験形式18分
05. メールと印刷のきほん15分
06. 過去問 システム管理15分
10
模試と直前対策
01. 模試 10190分
02. 101弱点復習15分
03. 模試 10290分
04. 102弱点復習15分
05. 直前チェック15分
06. 受験と次のステップ15分

サービス管理の試験形式

systemctl enable を打っただけでサービスが動き出すと思っていると、そこで詰まります。enable と start は完全に独立した操作です。ここと mask の強さ、[Install] の意味が出題の中心です。

enable は今すぐ起動せず、start は次回に効かない

ターミナル

systemctl start nginx # 今動く。再起動したら止まったまま systemctl enable nginx # 今は動かない。次回の起動から動く systemctl enable --now nginx # 両方

enable が実際にしているのは、ユニットファイルの [Install] セクションを読み、WantedBy で指定されたターゲットの .wants ディレクトリにシンボリックリンクを作ることです。disable はそのリンクを消すだけです。

残りは、restart が停止してから起動、reload がプロセスを落とさず設定だけ再読み込み、status が状態と直近のログです。判定を返すのが is-active と is-enabled、一覧が list-unit-files です。

mask は disable より強い

disable はリンクを消すだけなので、systemctl start を打てば普通に起動しますし、他のユニットが依存していればそちらの都合で勝手に起動してしまいます。mask は /etc/systemd/system/<ユニット名> を /dev/null へのシンボリックリンクにすることで、完全に起動不能にします。手動の start も拒否され、依存起動も封じられます。解除は unmask です。

状態手動の start依存による起動次回起動時
enabled起動する起動する起動する
disabled起動する起動する起動しない
masked失敗する起動しない起動しない

unit ファイルは3つのセクションでできている

プレーンテキスト

[Unit] Description=My sample service After=network.target [Service] Type=simple ExecStart=/usr/local/bin/myservice Restart=on-failure [Install] WantedBy=multi-user.target

[Unit] は説明と他のユニットとの関係、[Service] は起動方法、[Install] は enable したときに何をするかです。[Install] が無いユニットは enable できません。

[Unit] では、After が指定したユニットの後に起動するという順序だけの指定で、Before がその逆です。Requires は強い依存で相手が起動できなければ自分も起動せず、Wants は弱い依存で相手が失敗しても自分は起動します。After は順序、Requires は依存、という区別が問われます。

[Service] の Type も頻出です。

Type意味
simpleExecStart のプロセスがそのまま本体。既定値
forkingプロセスがフォークして親が終了する従来型のデーモン
oneshot1回実行して終了する。終わるまで次に進まない
notify起動完了を systemd に自分で通知する

oneshot は使い捨ての処理に使い、RemainAfterExit=yes を添えると実行後も active 扱いのままにできます。

置き場所には優先順位があり、変更には daemon-reload が要る

管理者が自分で置く /etc/systemd/system/ が最も優先され、パッケージが置く配布元の定義 /lib/systemd/system/ が最も低い優先度です。だからパッケージの定義を直接編集せず、/etc/systemd/system/ に置いて上書きするのが正しい作法です。一部だけ変えたいなら systemctl edit で drop-in を作ります。

ユニットファイルを追加・編集したら systemctl daemon-reload が必要です。忘れると変更が反映されません。定番の落とし穴です。

試験で狙われるところ

SysVinit との対応も出ます。chkconfig が enable と disable、service が start と stop に対応する、と覚えます。

そのほかは、enable は今すぐ起動せず start は次回に効かないこと、mask が依存起動まで封じること、ユニットを書き換えたら daemon-reload が要ること、[Install] の無いユニットは enable できないこと、そして restart は必ず一度停止するので無停止で設定だけ入れたいなら reload を使うことです。

ヒント

①方針 ユニットファイルを書く、読み直させる、有効にする、起動する、の4段です。enable と start は別物なので両方打つ必要があります。最後に mask を1つ

②使うコマンド ファイルは cat <<EOF > <パス> ... EOF で書きます。読み直しは systemctl daemon-reload、自動起動は systemctl enable <名前>、今すぐ動かすのは systemctl start <名前>、起動不能にするのは systemctl mask <名前> です

③部分解 [Unit] に Description=、[Service] に Type=oneshot と ExecStart=/bin/sh -c 'echo hello > /var/log/linuc-hello.log'、[Install] に WantedBy=multi-user.target。書いたら daemon-reload、enable linuc-hello.service、start linuc-hello.service、最後に mask nginx です

  • 1. /etc/systemd/system/linuc-hello.service を作る
  • 2. [Unit] に Description、[Service] に Type=oneshot と ExecStart、[Install] に WantedBy=multi-user.target を書く
  • 3. ExecStart は /bin/sh -c 'echo hello > /var/log/linuc-hello.log' とする
  • 4. systemctl daemon-reload でユニットを読み直させる
  • 5. systemctl enable linuc-hello.service で自動起動を有効にする
  • 6. systemctl start linuc-hello.service で今すぐ実行し、/var/log/linuc-hello.log ができることを確かめる
  • 7. systemctl mask nginx を実行し、systemctl is-enabled nginx が masked を返すことを確かめる

5 項目で採点します