LPICのまとめサイト
LINUXのまとめ資料。

- LPIC -LINUXについてのまとめ
- Level1 Ver4.0 と Level2 Ver4.0のまとめのまとめ


■$ 一般ユーザ、# rootユーザ

■デバイス
/dev ハードをファイルとして仮想認識→ファイル読み書きでデバイスを操作(udevデーモンで自動認識)
/proc カーネル認識しているデバイス
lspci リストpciデバイス
lsusb リストUSBデバイス
lsmod リストモジュール(デバイスドライバ)
modprobe 手動デバイス認識

■起動順
BIOS / UEFI > ブートローダ > カーネル > init / systemd
dmesg ディスクライブメッセージ(システム起動時を表示)
journalctl カーネルバッファ(システム起動)
dmesg | grep enp NIC一覧を出す(enpはethernet pathの略)

■システム起動ログ
/var/log/messages, dmesg, boot.log

■Shutdown
シャット。再起動、時間設定やメッセージ表示だけも
systemctl reboot, power off
shut down reboot, halt, poweroff
ctrl + alt + del -> シャットダウン
ランレベル 0 停止
      1 シングルユーザ(rootだけ利用可)
      2-5 マルチユーザ
      6 再起動
init rootで実行
telinit ランレベルの変更
runlevel ランレベル表示
wall 警告文をマルチユーザに送る
/etc/rc<ランレベル>.d ランレベルでの起動/終了
/etc/init.d/httpd start サービス起動
              stop 停止
/etc/inittab ランレベル等の起動設定府アイル
systemctl start, stop, restart, status, is_active, disable, enable pstfix.service メールサーバのサービス開始
ls /etc/systemd/system/multi-user.target.wants マルチユーザに含まれるinit=サービス

■FHS(ファイルシステム ハイエラルキー スタンダード)
/home 各一般ユーザ(別パーティションがいい)
/var ログやメールスプール(別パーティションがいい)
/usr プログラム・ライブラリ・ドキュメント
/boot ブート用パーティション
スワップ 仮想メモリ(物理メモリと同じ~2倍がいい)
bin, sbin, etc, dev, lib はルート

■LVM(logical volume manager)
物理 > 束ね >切り出し > 論理ボリューム


■ライブラリ
スタティックリンク(コンパイル時に埋込)
ダイナミックリンク(実行時に読み出す、DLL)
(シンボリックリンク)
(ハードリンク)

■Cloud-init
ホスト名、SSH公開鍵、一般ユーザ、インストールするパッケージ をクラウドの各インスタンス用に変えられる
/etc/machine-id 各インスタンスで違うID割り当て

■パッケージ
dpkg Debianのパッケージ扱いの基礎コマンドでredhatのrpmに相当、Cent/Fedoraのunm
apt-get
apt-get update -> apt-get upgrade
apt-cache
apt install
apt remove
apt search
apt autoremove
/etc/apt/sources.list にURLが記載されている

■実行制御
Ctrl + a 行の先頭
Ctrl + E 行のエンド
Ctrl + D 1文字削除/ログアウト
Ctrl + H バックスペース
Ctrl + L クリアしてカレント行
Ctrl + C 中断
Ctrl + S ロック
Ctrl + Q 再開
Ctrl + Z 処理を一時中止・サスペンド
cd ~ ユーザホームへ

■シェル変数
EV_SHELL = baka シェル変数を設定
export EV_SHELL 環境変数に格上げ
echo $EV_SHELL 変数を呼び出しは$を付ける
unset EV_SHELL 削除
env 環境変数の一覧表示
printenv 環境変数の一覧表示
set 一覧表示(シェル変数も)

■環境変数 PATH
echo $PATH 表示
PATH = $PATH:/opt/bin 追加
PATH = /opt/bin 上書き

■コマンド
セミコロン→エラーが出ても次のコマンドを実行
pwd; ls
&&→1つ目のコマンドが正常のときの次のコマンドを実行
ls && pwd
||→エラーのときのみ次のコマンドを実行
cat temp || echo "A file not found"
()→まとめる
(date; pwd; ls) > a.log 日とpwdとリストの結果をa.logに書く(コマンドは新たなシェルで実行するが本体は現在のシェル内で実行する)
ダブルクォーテーション→展開
echo "今日は$DATE。" 今日は8/1。
echo "カレント$(pwd)。" カレント/home。
バックスラッシュ→エスケープ
echo "今日は\DATE。" 今日はDATE
バッククォート→コマンド実行した結果を展開
DATE=date; echo `$DATE` Sun Feb 8 12:42:18 JST 2022
シングルクォート→文字列
echo '$DATE' $DATE

history コマンド履歴
!5 5番目を再実行
man man マニュアルのマニュアルを見る
less 1画面ずつ表示、/検索文字 で下に検索、?検索文字 で上に検索
touch タイムスタンプの更新(ファイルの)
head -n 5 /etc/service ファイルの先頭5行を表示
tail -f /var/log/message ファイル末尾を表示(-f で表示を続ける)
tee 十字分岐し書き込む ls | tee a.txt | wc -l リストの内容をa.txtに書き込みをしつつword countにつなげる
| パイプ、コマンドのstd outを次のstd inへ渡す

■オプション
-f →force 上書き
-p →property 同じ属性で
-r → recursive 再帰的(ディレクトリ内も)

■メタキャラクタ
* 0文字以上にヒット(0文字でも5文字でも) ls *.txt で全テキストファイル
? 1文字にヒット a?c でabc, acc等にヒット
[] いずれか z[a-c] でza, zb, zcにヒット
! 否定 a[!bc] でab,acは駄目、aaはヒット
{} or test{1,2} でtest1かtest2

■リダイレクト
> ファイルに上書き ls > a.txt
>> ファイルに追記 ls >> a.txt
< 標準入力切替 grep "a" < in.txt > result.txt in.txtを入力しgrepを掛けresult.txtに結果を書き込む

■ヒアドキュメント <<  bashのヒアドキュメントを活用する - Qiita
次の行から終了文字まで標準入力を続ける、下記であ<改行>いを書き込む
cat > sample.txt << EOS


EOS

2> 標準エラー出力を書く