LPIC level1の勉強初心者が嵌まるポイントを徹底解説(練習問題付)
LPICは意外に奥が深い。いや、深すぎる。
疑問が生じるとその答えを調べるというのはとても大事なことです。
しかし、調べている間に別の疑問が生じ、そこから派生してまた別の疑問が噴出し、そしてまた別の疑問が、、というように、LPICの勉強を始めるとこの果てない疑問との格闘になることが多々あります。
さっと身を引いてとりあえず暗記に徹してしまえばいいのに、と浅薄な私などは思ってしまいますが、
そうすんなり諦められない、しつこくて粘着質な学習者の方もいるものです(←いい意味で)。
本記事は、そんな生真面目で粘り強いLPIC学習の初心者から出てきた質問に対し、
細かいことは気にしない、が信条の私が回答するという趣旨になります。
それでは始めましょう。
Q1.HISTSIZEとHISTFILESIZEの違いって何ですか?
A1.HISTSIZEは履歴キャッシュの格納サイズ。
HISTFILESIZEは「.bash_history」の格納サイズ。
1つ目から面倒な質問ですね。
HISTSIZEはシェル毎の履歴の格納サイズです。HISTFILESIZEはログインユーザのホームディレクトリ下に格納される「.bash_history」ファイルに格納する履歴のサイズです。
ちょっとコマンドを叩いて確認してみましょう。
まずはHISTSIZEの確認から。
$ HISTSIZE=10 $ history
今まで10以上のコマンドを実行してきたのであれば、10個の履歴が表示されるはずです。
$ HISTSIZE=20 $ history
HISTSIZEの値を「20」に増やしました。すると、11個の履歴が表示されるはずです。
一度10個になった履歴の最大保存サイズが20になったので、1つ増えたというわけです。
次にHISTFILESIZEの確認です。
$ HISTFILESIZE=5 $ cat ~/.bash_history
既存のユーザで既に5つ以上コマンドを実行していたとすると、5つの履歴が表示されるはずです。
これで説明終了、と言いたいところですが、もう少し深堀りしてみましょう。
再びhistoryコマンドを実行してみます。
$ history
やはり10個の履歴が表示されます。
このことから、historyコマンド実行時の参照先は.bash_historyファイルではないことが分かります。
実はhistoryコマンド実行時にはキャッシュを参照しています。
では.bash_historyにこの内容が書き込まれるのはいつでしょうか?
それはこのターミナルを終了したタイミングです。
$ exit
一旦exitしてから、改めて同ユーザでログインし直し、再び.bash_historyを見てみてください。
$ cat ~/.bash_history
5つしか履歴が残っていないことが分かります。
この状態でhistoryコマンドを実行してみましょう。
$ history
5つしか履歴が残っていないはずです。
そうです、シェル起動時に、.bash_historyの内容を読みだすので、シェル起動時には前回保存された.bash_historyの履歴数の数しかhistoryコマンドの結果には出てこないということになるわけです。
尚、HISTFILESIZEとHISTSIZEのデフォルト値は1000(ディストリビューションによる差異はあるかも)なので、これ以降の履歴は(特に変更しなければ)、1000個まで保存されるということになります。
Q2.rootだったらほかのユーザのディレクトリとかでその他のユーザの書き込み権限が無くてもファイルを作成できるのはなぜ?特別だからなの?
A2.そうです。特別だからです。
これは至ってシンプルな回答になりますが、rootユーザは特別なんですよね。管理者なのでなんでもできるわけです。
これと同タイミングの質問で、
「『/(ルートディレクトリ)』には以下のようにrootユーザに書き込み権限はないのに書き込みできるのはなぜ?」
dr-xr-xr-x. 23 root root 4096 Nov 8 21:12 /
という風に問われましたが、これも同様の理由です。
rootユーザでも書き込みができます。
$ su - # cd / # touch test.txt
上記のように実行するとtest.txtファイルが生成されることが分かります。
このようにrootユーザは非常に強力な権限を持っているので、あまり普段から使用しない方が本当は良いです。
Q3.duコマンドの結果が計算合わないのですが・・・
du -hc /dev
略
236K /dev/.udev/db
4.0K /dev/.udev/rules.d
244K /dev/.udev
80K /dev/shm
324K /dev
324K total
/devディレクトリが324KBで、その中にあるものの合計で324KBを超えてしまっているのはなぜですか?
A3.総和をとるのは早計です。
しっかりとディレクトリも見てみないといけません。
「/dev/.udev/db」は「/dev/.udev」ディレクトリの配下にありますし、「/dev/.udev」ディレクトリは「/dev」の配下にありますからね。Linuxではこのようにディレクトリ以下を再帰的に表示するという形式が、ままあります。
例えばDebian系の「dpkg -L 【パッケージ】」コマンドなどは、パッケージからインストールされたファイルを一覧表示するコマンドですが、そのファイルが格納されているディレクトリも再帰的に表示します。
練習問題
それでは最後に、今回の質問に関連したLPIC練習問題を解いてみましょう。
(答は記事の最後)
練習問題1
以下の内、パーティション別の使用量を確認するコマンドを選びなさい。
1.du -h
2.df -h
3.du -sh
4.df -sh
練習問題2
コマンド履歴から「lpic」という文字列を検索するコマンドを記述しなさい。
練習問題3
以下のようなパーミションのファイル「lpic.txt」がある。
-rwxr-xr– 23 lpic lpic 4000 Nov 8 10:12 lpic.txt
このファイルを編集することができるユーザは以下のうちどれか。
1.lpic
2.nobody
3.root
4.administrator
4.まとめ
いかがだったでしょうか。既にLPIC合格をされている方や、Linuxをガリガリ操作している方にとっては、
え?こんなこと聞く?そんなの俺も知らんけど?てか知らなくてよくね?と思ってしまうような質問もあったかもしれません。
しかし、そういうひょんな質問にしっかり向き合ってみるとそこから新たな発見があるものです。
試験合格の為には、深みに嵌まりすぎないことも大切ですが、折を見て、どっぷりと自分の疑問に浸かってみる時間も必要かもしれませんね。
練習問題の答
練習問題1:2
練習問題2:history | grep lpic
練習問題3:1,3