speedcubing
ckcsc
(SysAdmin & Infrastructure)
foundations / echosystem (生態)
History / Distro
storage stack / Filesystems (infra)
FS / Disk / Part / LVM / mnt
FHS / System Layout (SysAdmin)
File sematics / Permissions
Link / rwx
Process & Service Management
systemd
Linux 是一種作業系統
像Windows與MacOS一樣
Linux 本體是 kernel (核心)
更展開一點...
負責: CPU/Memory/Drive/Network/Driver 管理...
平常用到的 Linux 系統:
整套叫做 Linux Distribution
特性:
哪裡能遇到Linux ?
1970s
Unix 誕生
1983
GNU Project
Richard Stallman: (GNU Project)
做出完全自由的Unix-like OS
有userland, 沒有kernel
1991
Linus Torvalds:
喔,我在寫一個hobby OS, 不會很大
1991
Linux kernel
所以...
GNU userland + Linux kernel
= GNU/Linux
pacakge manager: apt / apt-get
pacakge manager: dnf
pacakge manager: pacman
媽的,不要再Arch了
pacakge manager: apk
打 yes (accept fingerprint)
輸入password (不會顯示)
ssh student@1.2.3.4ssh student@<ip>先使用apt安裝nginx
輸入password (不會顯示)
sudo apt install nginx -y(檔案系統階層標準)
定義 Linux 主要目錄、目錄內容
大多 Distribution 都會遵守。
/bin
/boot
/dev
/etc
/home
/lib
/media
/mnt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/var
/usr
最基本要用的指令
sh, cp, ls
su才需要的指令
iptables, reboot, fsck
開機相關
/boot/vmlinuz-*
/boot/initrd-*
/boot/grub/
...
Kernel
boot時的臨時root
bootloader
BIOS/UEFI 拉起 grub
grub load Kernel and initramfs
Kernel 用 initramfs 當作臨時 root
找到 rootfs 後,switch root
Device File
/dev/sda
/dev/tty
/dev/null
...
硬碟
terminal
blackhole
純設定
家目錄
包含用戶資料/設定/ ssh key 等等
系統核心用的 lib
可移除裝置
手動掛載的地方
系統即時資訊
/proc/cpuinfo
/proc/meminfo
/proc/<pid>
硬體資訊
/sys/class/net
/sys/class/block
網卡
硬碟
root 的家目錄
為什麼不在 /home/root/ ?
開機後出現的暫時資料
tmpfs
Service Data
/srv/www
/srv/ftp
暫存區
reboot 清空
會變動的資料
/var/lib
/var/log
/var/tmp
服務資料
log
不清除的 /tmp
user system resources
/usr/bin
/usr/sbin
/usr/share
/usr/local
使用者工具
使用者安裝的軟體
程式在哪
設定在哪
資料在哪
log在哪
硬體在哪
系統狀態
硬碟炸了
/bin/ /usr/bin/
/etc/
/var/lib/ /home/
/var/log/
/dev/ /sys/
/proc/
/var/
Disk -> Partiton -> (PV -> VG -> LV) -> FS -> mount
-> FS -> mount
Linux只有一棵目錄樹
任何硬碟/USB/等等,都要 "掛" 到某一個目錄上 能用
這個行為就是"mount"
把硬碟 (0/1) 整理成能用的檔案系統
ext2
ext3
ext4
inode:
File(name) 指向 inode
inode包含metadata
inode指向blocks (max: 12)
Block:
磁碟被切成多塊block (4KB)
用於儲存檔案
(與FAT32比)
指令
SATA
NVme
SAS
最常見的 Hard Drive / SSD
走 PCIe 的 SSD,比 SATA 快
伺服器用,可熱插拔
/dev/sda
/dev/sdb
/dev/sdc
...
Linux會把硬碟編號為:
/dev/sdX or /dev/nvmeXnY
/dev/nvme0n1
/dev/nvme1n1
...
SATA/SAS
NVMe
(block device)
指令
指令
(part)
(保證單一FS毀損,其他FS不會損壞)
這裡,灌Debian到一半,設定partition
就可以選說,怎麼part
All Files in one partition
Seperate Partition
有5個partition,分別被mount到4個folder
(swap是記憶體延伸空間)
磁碟分割表
紀錄了各個Partition的位置與資訊
(例如 MBR 或 GPT)
Windows:
指令
df -h
三個核心名詞:
PV
VG
LV
讓資源給 LVM 管理
PV 組成 VG
從 VG 切資源出來
(PV)
(VG)
(LV)
同份資料,不同入口
ln -s /var/log/nginx/access.log ~/access.logecho "hello" > a.txt
ln a.txt hard
ln -s a.txt symr
w
x
讀內容
修改內容
執行
權限核心:
File
Dir
ls看內容
新增/刪除File
cd進去
owner
group
other
檔案的owner
檔案所屬group
not owner and not in group
三組身分:
指令
ls -la常見:
r-x
--x
rwx
能進出,能看list (read-only)
能進去 (特定檔案才能看到)
都可以
數字編碼
---
--x
-w-
-wx
r--
r-x
rw-
rwx
0
1
2
3
4
5
6
7
指令
chmod 754 <file>
chmod u+rwx,g+rw,o+r <file>
chmod -R 777 <file>
Unit File
[Unit]
[Service]
[Install]
這個Unit是什麼?
如何啟動?
要不要autorun ?
指令
systemctl status
systemctl start
systemctl stop
systemctl restart
systemctl enable
systemctl disable
systemctl list-units --type=service
指令
journalctl -u
journalctl
By speedcubing