df — 磁碟空間使用率
常用參數
| 參數 | 功能 |
| -h | 人類可讀單位 (KB/MB/GB) |
| -T | 顯示檔案系統類型 (ext4/xfs/ntfs...) |
| -i | 顯示 inode 使用率 (關鍵:inode 滿會無法建檔) |
| -l | 僅顯示本地檔案系統 (排除 NFS 等網路掛載) |
| -P | POSIX 輸出格式 (腳本解析友善) |
| -x fstype | 排除指定類型 |
實戰範例
# 完整概覽
df -hT
# 檢查 inode 危機
df -hi | awk '$5 > 90 {print}'
# 根分區剩餘空間 (腳本用)
df -P / | awk 'NR==2 {print $4}'
top — 即時程序監控
啟動參數
top -d 2 # 更新間隔 2 秒
top -u alice # 只顯示 alice 的程序
top -p 1234,5678 # 監控特定 PID
top -b -n 1 # 批次模式輸出一次 (適合腳本/日誌)
互動熱鍵 (運行中按鍵)
| 鍵 | 功能 |
| P | 依 CPU 使用率排序 (預設) |
| M | 依記憶體使用率排序 |
| T | 依累積 CPU 時間排序 |
| N | 依 PID 排序 |
| c | 切換顯示完整命令行 |
| k | 殺死程序 (輸入 PID、信號) |
| r | 重設優先序 (renice) |
| u | 篩選特定用戶 |
| W | 寫入 ~/.toprc 保存配置 |
| 1 | 切換顯示各 CPU 核心使用率 |
| q | 離開 |
輸出欄位解讀
- PR:優先序 (Priority)
- NI:Nice 值 (-20~19,越小優先序越高)
- VIRT:虛擬記憶體總量 (含共享庫、映射檔案、未實際分配)
- RES:常駐記憶體 (實際佔用物理 RAM)
- SHR:共享記憶體
- S:狀態 (R=運行、S=睡眠、D=不可中斷睡眠、Z=殭屍、T=停止)
free — 記憶體使用狀態
參數
free -h # 人類可讀 (推薦)
free -m # MB 單位
free -g # GB 單位
free -s 5 # 每 5 秒更新 (監控模式)
free -t # 顯示總計行
欄位含義 (以 -m 為例)
total used free shared buff/cache available
Mem: 15900 8200 1200 500 6500 7200
Swap: 8191 100 8091
- available:真正可供新程序使用的記憶體 (含可回收快取)
- buff/cache:核心緩衝區 + 頁面快取,壓力大時自動釋放
quota — 磁碟配額管理
前置:檔案系統啟用 quota
# /etc/fstab 加入 usrquota,grpquota
/dev/sda3 /home ext4 defaults,usrquota,grpquota 0 2
mount -o remount /home
quotacheck -cug /home
quotaon -avug
查看與設定
quota -u alice # 查看用戶配額
quota -g developers # 查看群組配額
edquota -u alice # 互動式編輯 (軟/硬限制、inode)
setquota -u alice 100M 200M 1000 2000 /home # 指令式設定
at — 單次排程任務
時間格式
at 14:30 # 今日 14:30
at 14:30 tomorrow # 明天 14:30
at 14:30 + 2 days # 兩天後 14:30
at 14:30 12/25/2024 # 指定日期
at now + 5 minutes # 5 分鐘後
操作流程
at 14:30
at> /usr/local/bin/backup.sh
at> Ctrl+D (EOT)
job 3 at Tue Dec 10 14:30:00 2024
atq # 列出待執行任務
atrm 3 # 刪除任務 3
at -c 3 # 查看任務內容
lp / lpr — 列印服務
lp -d printer_name file.txt # 指定印表機
lp -n 3 file.txt # 列印 3 份
lp -t "Monthly Report" file.pdf # 設定標題
lp -o sides=two-sided-long-edge # 雙面列印
lpstat -p # 列印機狀態
cancel job_id # 取消列印任務
useradd / groupadd — 帳號與群組建立
useradd 關鍵參數
| 參數 | 功能 | 範例 |
| -u UID | 指定 UID | useradd -u 2000 alice |
| -g GID | 指定主群組 | useradd -g users alice |
| -G group1,group2 | 附加群組 | useradd -G wheel,docker alice |
| -d /home/alice | 指定家目錄 | |
| -m | 自動建立家目錄 (複製 /etc/skel) | |
| -s /bin/bash | 指定 Shell | |
| -c "Alice Chen" | 備註 (GECOS) | |
| -r | 建立系統帳號 (UID < 1000、無家目錄) | useradd -r -s /sbin/nologin nginx |
| -e YYYY-MM-DD | 帳號過期日 | |
| -f INACTIVE | 密碼過期後停權天數 | |
groupadd 關鍵參數
groupadd -g 2000 developers # 指定 GID
groupadd -r sysadmins # 系統群組 (GID < 1000)
kill — 發送信號給程序
kill -l # 列出所有信號
kill -TERM 1234 # 標準終止 (預設)
kill -KILL 1234 # 強制殺死 (SIGKILL=9,不可捕捉)
kill -HUP 1234 # 重讀配置 (常用於 daemon)
killall httpd # 按名稱殺死所有同名程序
pkill -u alice # 殺死用戶所有程序
crontab — 週期性排程
時間格式 (五欄位)
* * * * * command
分 時 日 月 週
特殊符號
| 符號 | 含義 |
| * | 任意值 |
| */n | 每 n 單位 |
| a-b | 範圍 |
| a,b,c | 列舉 |
常用範例
0 2 * * * /backup/daily.sh # 每天 02:00
*/10 * * * * /monitor/check.sh # 每 10 分鐘
0 0 1 * * /backup/monthly.sh # 每月 1 號
0 3 * * 0 /backup/weekly.sh # 每週日
@reboot /usr/local/bin/startup.sh # 開機執行
@hourly /scripts/hourly.sh # 每小時
操作指令
crontab -e # 編輯當前用戶 crontab
crontab -l # 列出
crontab -r # 刪除 (慎用)
crontab -u alice -e # root 編輯指定用戶