内容简介:近半年與 CentOS 相處頻繁,二十年前學的 Linux 知識不敷使用,該進行一個讀書充電的動作。從市圖借到的這本「CentOS 7.3 建置、管理與伺服器架設實戰」,非常淺顯好讀,章末還有簡單測驗題,頗有學校教科用書的 fu,用來入門很不錯。依照慣例,用做筆記逼自己認真讀完,筆記只有關鍵字,類似索引用途主要用於備忘,實際使用時細節再待爬文補足。UNIX 作業系統誕生於 1969 美國貝爾實驗室推出。Linux 始於 Linus Torvalds 1991 大學時代想實作一套用於學術的開放標準 UNIX。
近半年與 CentOS 相處頻繁,二十年前學的 Linux 知識不敷使用,該進行一個讀書充電的動作。從市圖借到的這本「CentOS 7.3 建置、管理與伺服器架設實戰」,非常淺顯好讀,章末還有簡單測驗題,頗有學校教科用書的 fu,用來入門很不錯。依照慣例,用做筆記逼自己認真讀完,筆記只有關鍵字,類似索引用途主要用於備忘,實際使用時細節再待爬文補足。
Linux 作業系統
UNIX 作業系統誕生於 1969 美國貝爾實驗室推出。Linux 始於 Linus Torvalds 1991 大學時代想實作一套用於學術的開放標準 UNIX。Linux 使用 X-Window (稱 X11 或 X)作為圖形介面標準,依 X 協定實作的環境如 KDE、GNOME。
發生版本 Distribution/Distro
早期 Linux 安裝步驟繁雜,故出現許多「發行版本」蒐集安裝、驅動、 工具 、軟體,方便安裝。當今主要的發行版本:
- RedHat:RedHat 公司(成立於1995) 的 RedHat Enterprise Linux,RHEL
- CentOS:The Community ENTterprise OS -> CentOS,RHEL 開源免費版
- Fedora:RedHat 公司贊助 Fedora Project 社群,每年推出新版 Fedora,也當成新技術試鍊場,驗證成功納入 RHEL
- Ubuntu:由自由軟體社群開發,近年火紅,硬體支援快又廣,有 Desktop 及 Server 版本、Kubuntu (以 KDE 取代 GNOME)、Gobuntu (全部使用 GNU 版權套件)、edubuntu (針對學校教學設計)
- Debian:由 Debian Project 組織維護,中文化做得最好。Ubuntu & Xandros (EeePC) 都是以 Debian 為基礎發展。
- SuSE:原為德國的一個 Linux 版本,2004 被 Novell 公司合併,主導推出套件格式 RPM 及更新軟體 YaST。Novell 贊助 openSuSE 社群,如同 Fedora 作為 SuSE 企業版驗證新技術的基礎
Open Source 授權
- GNU (GNU''s Not Unix) 計劃發展開源版本 UNIX 為宗旨,1991 Linux 出現,改以 Linux 為主軸。
- General Public License,GPL1989 Stallman GNU GPL 條款,為 Linux 上各類自由軟體(核心、gcc)主要授權,GPL 要求軟體如使用 GPL 程式碼,自己也要 Open Source(病毒式傳染力)
- Apache Apache Software Foundation(ASF)為支援自由軟體的非營利組織,最有名的軟體為 Apache 網頁伺器,其使用 Apache 授權,允許不提供源碼,並改以其他授權散佈,比 GPL 寬鬆
註:另外還有 MIT、BSD,延伸閱讀: 開放源碼授權概觀
Linux 認證
- LPIC Linux Professional Institute Cerfification LPIC,Level 1、2、3
- RHCE RedHat Cerfificated Engineer
- NCLP Novell Certificated Linux Professional
Security Policy
RHEL 7.2 起導入 Security Policy,有多種 Profile:Default、Standard System、PCI-DSS V3 Control Baseline、C2S...
開機流程
BIOS -> GRUB(Bootloader,安裝多系統切換/單人模式救援) -> Linux 核心載入 -> 執行 init 程式(設環境變數、檢查分割區、掛載檔案系統...) 執行階層 Runlevel:
- 0 - 系統關機
- 1 - 單人模式(救援專用)
- 2 - 多人模式,不載入NFS(救援專用)
- 3 - 文字模式,多人使用
- 4 - 保留未用
- 5 - 圖形化介面(X-Window),多人使用
- 6 - 系統重啟
Tips:
- bash 指示符號 # 代表目前身分是 root、一般使用者時為 $
- 快速鍵 Ctrl-D 送出EOF (相當於 DOS Ctrl-Z)
- 快速鍵 Ctrl-Z 暫停目前工作
關機指令
- shutdown -h now 馬上關 (先下w看誰在線上)
- shutdown -h 10 十分鐘後關機 (亦可指定廣播訊息)
- shutdown -c 取消關機
- shutdown -r now 或 reboot (重啟系統)
目錄
- /bin 執行檔
- /etc 設定檔
- /sbin 系統管理者專用執行檔
- /dev 設備,如軟硬碟、印表機、光碟機、COM
- /home
- /root 系統管理者專屬目錄
- /boot 開機必須的核心檔案
- /usr package幾乎都在這裡
- /usr/bin
- /usr/sbin ⇐ root 系統管理工具
- /lib 共用程式庫
- /opt ⇐ 非Linux外來軟體,Oracle、StarOffice
- /var 變動性系統檔案(Log、郵件 Queue、資料庫檔案)
- /tmp ⇐ 重開機可能清除
- /media ⇐ 可移除媒體
- /mnt ⇐ 暫時性掛載
常用指令
- pwd
- ls、ls -l、ls -al(含隱藏檔)檔案權限欄共十個字元,如-rwxrwxrwx,第一欄為型態(-檔案、d目錄、l連結、b可儲存週邊、c序列埠設備如鍵盤滑鼠),後面接三組權限,擁有者、群組、其他人
- cd 換目錄
- cp、mv、rm 複製、搬移、刪除
- man - Manual 查看手冊,apropos 搜索手冊、info - 說明/教學
- cat - 相當於 DOS type 印出文字檔,cat -n xxx.txt 加上行列
- more - 多頁顯示、less - 可前後翻頁
- tail - 查看檔案最後10列,tail -n 100 xxx.log 顯示最後100列,tail -f xxx.log,內容有新增時即時顯示出來
- touch - 建立空白檔案、touch -t 20181231100000 xxx.txt 可修改檔案時間
- rmdir - 刪目錄 (rm -r 亦可)
- df -h 查詢磁碟空間、du 查詢目錄/子目錄佔用空間
- 導向 >、<、| (Pipeline)
- which (依PATH環境變數找尋檔案)、whereis 查詢檔案完整名稱、locate 查詢 /var/lib/mlocate/mlocate.db 資料庫找到檔案(updatedb更新)、find 搜尋檔案(搜HD,慢、耗資源)
- grep 搜索比對文字
- fdisk 管理分割區、mkfs 格式化
檔案系統
- XFS - SGI 1993 發展 64 位元日誌型檔案系統,2001 加入 Linux,6.x 用 ext4,7.x 改 XFS,具 ext4 特性但效能更好。可支援到 8EB(=8000PB=8000*1000TB)
- 每個檔案有一個 inode,記錄檔名、更動時間、權限、儲存區塊位置等資訊,可使用 ls -i 查詢,存取檔案時先找到 inode 知道區塊位址再讀資料
- 建立連結 ln -s target source,Symbol Link,ls -l 時第一欄位為 l,後方有 -> 指向真實檔案,若真實檔案被刪除,連結無效會變紅色
- Hard Link ln target source,若有兩個更連結指向同一檔案,刪除時另一個仍有效,硬連結不能跨分割區
- mount 設備要掛載到路徑才能使用 mount -t iso9660 /dev/cdrom /media/cdrom
- 檔案格式:xfs, iso9660, msdos, vfat, ntfs, nfs, smbfs, ext2, ext3, ext4
- chmod 修改檔案權限設定範例:ug+rw, a+r, u-w, go-x, g=rx, ug=r, a=rx, "u+x,g+wx"(用逗號合併多個設定)
- chown 修改擁有者 chown userName.grpName fileName, chown .grpName fileName
- chgrp 修改所屬群組
Log
- /var/log/dmesg 開機記錄 (指令dmesg,插上USB後用它查/dev/sdx、檔案系統格式資訊)
- /var/log/secure 安全記錄
- /var/log/messages 系統記錄
vi
一般模式、編輯模式(i,o,a)、命令模式(按ESC,最下方左側出現:)
使用者帳號
- groupadd 新增群組 groupdel 移除群組(群組必須是空的)
- useradd 新增使用者 -g 主要群組 -G 附加群組
- cat /etc/passwd 人員清單
- /etc/skel/ 預設 /home/user 的範本
- id username 列出使用者資訊
- userdel 刪除使用者 -r 移除家目錄
- usermod 修改使用者設定
- chsh 修改使用者的 shell -> /sbin/nologin 禁止登入
程序管理
- ps / ps -f 完整資訊 / ps aux 顯示 CPU, RAM, 狀態
- top 列出 CPU/Memory/Process 資訊,似 Windows 工作管理員
- pstree 列出行程從屬關係
- 指令後方加 & -> 丟入背景執行 == 先執行,Ctrl-Z 再輸入 bg
- jobs 列出背景行程
- fg 將上個背景行程拉回前景 / fg n ⇐ 配合 jobs 取得序號
- 優先權:nice 值(NI),用 ps l 看 NI,或用 -o comm,pid,ni 指定顯示欄位。NI 預設為 0,用 nice 指令可增減 NI 值啟動特定程序。renice NI值 pid 調整執行中程序的 NI 值
- kill pid 停止程序(請其自行了斷) / kill -9 pid 強制中止
- free 觀察記憶體、Swap
- 優先權:另有 Priority (PRI),預設 80,PRI + NICE 為實際用於分配優先權的值
- cat /proc 樹狀結構
- /proc/meminfo 記憶體 /proc/partitions 磁碟分割 /proc/cpuinfo CPU資訊 /proc/PID數字 => 該程序的資訊(attr, auxv, cmdline,cpuset,cwd,environ,io...)
- 甚至可改主機名稱 echo "newname" > /proc/sys/kernel/hostname
防火牆
- firewall-cmd --state 顯示目前狀態
- firewall-cmd --get-active-zone 列出各網路介面的 Zone
- firewall-cmd --zone=public --list-all 列出 public Zone 的所有服務
- firewall-cmd --get-zones
public / external / dmz /work / home / internal / trusted / drop / block - firewall-cmd --zone=home --change-interface=enpls0 指定 Zone 使用的網路介面
- firewall-cmd --permanent --zone=home --change-interface=enpls0 ⇐ 永久保存設定
- firewall-cmd --reload 重新讀取設定檔
- firewall-cmd --get-services 列出所有服務 dns, ftp, http, https, nfs, ntp, pop3s.... /usr/lib/firealld/services
- cat /usr/lib/firewalld/services/dns.xml 可知其對應 53/tcp, 53/udp 埤
- firewall-cmd --zone=public --add-service=dns 開放 DNS 服務 / --add-port=9958/tcp
- systemctl disable firewalld 下次開機後不再啟動 / systemctl stop firewalld 立即停用
壓縮打包
- gzip 附檔名為 .gz
- zip/unzip 配合 Windows
- tar -cvf name.tar file* 打包 -czvf 打包壓縮,形成 .tgz
- tar -xvf name.tar 解開 / -zxvf 解壓並解開
- bzip2 / bunzip2 => .bz2
時間
- 設定時區 cp /usr/share/zonefile/Asia/Taipei /etc/localtime
- date +%Y%m%d 得 20190104 %H、%M、%S
- date MMDDhhmmYYYY 設定時間,如 date 010410002019
- touch `date +%Y%m%d`.txt以 yyyyMMdd.txt 檔名建立檔案
套件
- RPM 套件的平台附檔名
i386 - Pentium 3/4, AMD K7
i586 - Pentium MMX, AMD K5, K6
i686 - Pentium 3,4,M & AMD Athlon, Duron, Thunderbird+
X86_64 Xeon, i5,i7, AMD K8, Athlon64
ppc - DEC Alpha, PowerPC
noarch - 不限平台 - rpm -qa 查詢已安裝 -qi 查詢特定套件 -ql 查詢套件檔案 -qf 查詢檔案之安裝來源
- rpm 套件相依性複雜,交給 yum 代勞才是王道
- yum install / update / remove / search(搜索特定文字) / list(列出所有)
- ant - Java 寫的建置工具
- yum repolist
- yum -y install epel-release ⇐ 新增套件庫
工具指令
- du -h 各目錄使用空間
- df -h 各分割區空間
- dd if=/dev/zero of=file3m bs=1M count=3 產生 3M 大小的檔案
- wc 計算字數
- tr 取代或刪除文字
echo "ABCDE" | tr ABC xyz
echo "ABCDE" | tr [:upper:] [:lower:] 尚有 [:alpha:] [:alnum:] [:blank:] [:digit:]
echo "ABCD" | tr -d 'A' - scp 透過 ssh 複製檔案
- seq 1 12 產生 1-12 數字 seq 1 2 11 遞增 2 seq -w 1 2 11 左補零同寬
- sort 排序
- uniq 相鄰相列相同者合併一列
- cut -d',' -f 2 filename,CSV取第二欄,不加 -d 預設以 \t 分隔
- split -b 1m file3m -> 拆成三個 1MB 檔案, 檔名 xaa xab xac
- cat xaa xab xac > joinfile 三檔合一
- diff joinfile file3m 比對是否相符
- ping BJ4
- traceroute BJ4
- hostname / hostnamectl 印出詳細設定 / set-hostname
- mail -s "subject" jeffrey@mail.com
- mutt 互動式文字介面郵件軟體
bash
- alias ls='ls --color=tty'
- 常用別名可寫成 ~/.bashrc
- echo 'AAA, BBB' (加-n不換行)
- echo -e"A\nB\tC\nD"
- 預設變數 (ex: echo $HOME)
HOME(家目錄)、IFS(欄位分隔字元)、PATH、USER、UID、HISTFILE(指令歷史檔案位置)、LANG、PWD、RANDOM(0-32767亂數) - var="A"
echo $var 或 echo "$var" - read var 鍵盤輸入變數
- $? ⇐ 上個指令的結束碼,DOS Exit Code
- test -d 測試是否為目錄 -e 檔案是否存在 -s 檔案是否大於0 -r 檔案是否可讀 -w 檔案是否可寫入 -x 檔案是否可執行 -L 檔案是否為連結 (搭配 echo $? 可顯示結果)
- test -n 字串長度是否大於0 -z 字串長度是否為0 str1=str2/str1!=str2 字串相等或不相等
- test n1 -eq n2, n1 -ne n2, ne -ge n2, n1 -gl n2, n1 -le n2, n1 -lt n2
- ~/.bashrc 設定別名
- ~/.bash_profile 設定環境變數
- shell script : $1 $2 -> myscript v1 v2, $1=v1, $2 = v2
- if 分支
if test 測試 then ... else ... fi
- for 迴圈
for n in 1 2 3 4 5 (可用 `seq 1 5` 取代 1 2 3 4 5) do echo $n done
網路相關
- ifconfig 查網卡資訊
- cat /etc/hosts IP 對照表
- ifconfig enp0s3 192.168.1.30 netmask 255.255.255.0
ifconfig enp0s3 up / down - ip address show
ip -s link show enp0s3 列出傳輸量統計
進階用法:指派IP、刪除IP、變更屬性 - NetworkManager 服務,適合筆電在不同場合變換網路設定
- netstat (yum -t install net-tools)
- ncftp 續傳、網址下載 位於 EPEL (Extra Package for Enterprise Linux)
服務
- systemctl 取代 init 管理系統服務
- systemctl set-default multi-user.target / graphical.target 設定開機進入命令列模式或GUI
- systemctl isolate multi-user.target / graphical.target 立刻進入命令列模式或GUI
- 服務結尾 .service 持續運行快速回應 .socket 有連線才啟動
- /usr/lib/systemd systemd 的執行檔
- /usr/lib/systemd/system Unit服務與Target設定檔
- systemctl start/stop/restart/enabled(開機啟動)/disable(開機停用)/status service_name
- /etc/init.d 啟動時要執行的服務,由各套件安裝
- /etc/rcX.d 不同 runlevel 要啟動的服務
- /etc/rc.local 開機後自動執行的腳本
- chkconfig --list 列出服務在各 runlevel 的啟動設定
- xinetd 靠行時服務,有請求時啟動程式出來服務,例如:telnet, talk
- Anacron (yum install cronie-anacron)
依頻率執行,如:一天一次,開機後五分鐘執行
伺服器
書中還介紹了 Apache、FTP、vsftpd、DNS、postfix、SMTP、IMAP、POP3、RoundCube Web Mail、 Docker 等伺服器架設與設定,Docker 部分已做過研究,其他伺服器評估自己架設的機率不高,待有需要再查。
CentOS Basic
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 管理 Redis 伺服器的利器:Redis Desktop Manager (原始碼建置筆記)
- 如何在 Angular CLI 建立的專案加入 Angular Universal 伺服器渲染功能
- 動手學 VPS 架站:使用 CentOS 7 + Nginx + PHP-FPM + MariaDB (7) - 網頁伺服器
- 技术管理者标准管理模板
- VMware管理集群可协助管理
- MySQL用户账户管理与权限管理详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。