コース一覧
LinuC レベル1(LPIC-1対応)対策
findとlocate

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分

findとlocate

古いログを片付けるつもりが、符号を逆に書いたせいで今日のログを消してしまう。find の事故はほとんどこれです。-mtime のプラスとマイナスは、言葉で説明できるところまで持っていかないと当たりません。

find は探す場所が先、条件が後

ターミナル

find <探し始める場所> <条件> <アクション>

左から、どこから探すか、何を探すか、見つけたら何をするか、の順です。条件を書かなければ全部が該当し、アクションを書かなければ -print として扱われてパスが1行ずつ出ます。grep のようにパターンを先に書く形ではない、というのが他のコマンドとの違いです。

条件意味
-name "*.conf"名前が一致するもの。大文字と小文字を区別する
-iname "*.CONF"名前が一致するもの。大文字と小文字を区別しない
-type f通常のファイル
-type dディレクトリ
-type lシンボリックリンク

-name にワイルドカードを渡すときは必ず引用符で囲みます。囲まないとシェルが先に展開してしまい、find に届く前に別のものへ化けます。ほかに所有者で絞る -user と -group、権限で絞る -perm があります。-perm 644 はちょうど 644、-perm -644 は 644 のビットをすべて含むもの、-perm /222 はどれか1つでも持つものです。

大きさと日時は符号で意味が変わる

ターミナル

find /var -size +10M find /var/log -mtime +7 find /var/log -mtime -7

大きさの単位は c がバイト、k がキロバイト、M がメガバイト、G がギガバイトです。単位を省略すると b、つまり 512 バイトのブロックで数えられます。

日時の条件は -mtime が内容の変更、-atime が最後のアクセス、-ctime が inode の情報の変更、-mmin が分単位です。

符号の意味は大きさも日時も同じで、プラスがそれより大きい、マイナスがそれより小さい、符号なしがちょうどその値です。日時では経過日数に対する不等号として読みます。-mtime +7 は経過日数が大きい方、つまり7日より前に変更された古いファイル。-mtime -7 は経過日数が小さい方、つまり7日以内の新しいファイル。-mtime 0 は24時間以内です。

条件を並べて書くと暗黙の AND です。OR は -o を挟み、優先順位は括弧をバックスラッシュでエスケープして示します。否定は感嘆符か -not です。

ターミナル

find /etc \( -name "*.bak" -o -name "*.old" \)

-exec のセミコロンとプラスは起動回数が違う

アクションは -print が既定で、-ls は詳細表示、-print0 はヌル文字区切り、-delete は削除です。-delete は確認なしで消えるので、まず -print で対象を確かめてから付け替えます。

ターミナル

find /var/log -name "*.log" -mtime +30 -exec ls -lh {} \; find /var/log -name "*.log" -mtime +30 -exec ls -lh {} +

{} は見つかったパスに置き換わる目印です。終わり方が2種類あり、ここが頻出です。セミコロンで終える形は1件につき1回コマンドを起動します。プラスで終える形は、できるだけ多くのパスをまとめて1回の起動に渡します。ファイルが1万個あれば前者は1万回、後者は数回で、速さが桁で変わります。セミコロンはシェルに食われるので、エスケープするか引用符で囲みます。

名前に空白が入るファイルまで安全に扱うには -print0 と xargs -0 を組み合わせます。これも、まず ls で対象を目視してから処理側のコマンドへ差し替えます。

locate は updatedb の写しを引く

locate はディスクを毎回たどるのではなく、updatedb があらかじめ作ったデータベースを引きます。速い代わりに、作成時点より後に生まれたファイルは見つかりません。さっき作ったファイルが出てこないのは故障ではなく鮮度の問題で、updatedb を実行すれば見つかります。設定は /etc/updatedb.conf にあり、検索対象から外すパスをここで指定します。

find は遅い代わりに常に最新、locate は速い代わりに情報が古いことがある。この対比がそのまま答えになります。なお、この学習環境には locate も updatedb も入っていません。

試験で狙われるところ

find は場所が先で条件が後です。-mtime +7 は古い方、-mtime -7 は新しい方です。-size の単位を省略すると 512 バイトブロックになります。-exec のセミコロンとプラスは起動回数が違います。

ヒント

①方針 条件は3つあります。名前と大きさと更新日時です。いきなり全部書かず、1つずつ足して行数が減るのを見ながら組み立てるのが確実です

②使うコマンド 書式は find <場所> <条件> です。名前は -name "*.log"、大きさは -size +5M、更新日時は -mtime +10。並べて書くとすべてを満たすものだけが残ります

③部分解 find /root/hunt -type f -name "*.log" -size +5M -mtime +10 で2行出ます。あとはその出力を > /root/found.txt でファイルに書くだけです

  • 1. まず ls -lR /root/hunt でどんなファイルがあるかを眺める
  • 2. /root/hunt の下から、拡張子が .log で、かつ 5MB より大きく、かつ最終更新が10日より前のファイルを探す
  • 3. その条件に一致したパスの一覧を /root/found.txt に書き出す
  • 4. 一致するのはちょうど2件です。行数を wc -l で確かめる

5 項目で採点します