伺服器建置實務上課補充教材
- 最新消息:
- 授課教材:鳥哥的 Linux 私房菜-伺服器架設篇第三版
- 每週都有可能會有上機實作,要等老師檢查完畢才能夠下課!否則就不算有來上課!
- 回首頁
- 舊版教材簡易介紹
unit 03:Linux 的基礎操作實務
程序的觀察、軟體的安裝與移除、服務的啟動與關閉、登錄檔的簡易查詢
- 程序的觀察:
- 先來了解程序 (process) 與程式 (program) 的差別:
- 程式:放在儲存媒體上,以檔案的型態存在的資料。
- 程序:當程式被執行後,會在記憶體裡面產生一個區塊,存放這些可以運作的程式碼與資料,就是所謂的程序。
所以,程式是在硬碟中,程序是在記憶體當中!兩者差很多!
- 查看全系統中的程序方式:
# 查看程序樹的方式
[student@localhost ~]$ pstree -p
systemd(1)─┬─ModemManager(681)─┬─{ModemManager}(700)
│ └─{ModemManager}(725)
├─NetworkManager(730)─┬─{NetworkManager}(745)
│ └─{NetworkManager}(749)
├─abrt-dbus(25776)─┬─{abrt-dbus}(25777)
│ ├─{abrt-dbus}(25778)
│ └─{abrt-dbus}(25779)
├─abrt-watch-log(697)
├─abrt-watch-log(698)
...
# 查看每一隻程序的相關資料
[student@localhost ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128092 6708 ? Ss 9月19 0:32 /usr/lib/systemd/systemd ..
root 2 0.0 0.0 0 0 ? S 9月19 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 9月19 0:00 [ksoftirqd/0]
root 6 0.0 0.0 0 0 ? S 9月19 0:00 [kworker/u4:0]
root 7 0.0 0.0 0 0 ? S 9月19 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 9月19 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 9月19 0:14 [rcu_sched]
# 類似 windows 的工作管理員
[student@localhost ~]$ top
top - 02:02:15 up 8 days, 23:23, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 182 total, 1 running, 181 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2048580 total, 852864 free, 471536 used, 724180 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1352508 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128092 6708 3956 S 0.0 0.3 0:32.52 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.08 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.16 ksoftirqd/0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.63 kworker/u4:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.36 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:14.17 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:04.03 watchdog/0
上表中的 top 畫面,可以按下 q 來直接離開 top 畫面喔!
- 網路已經啟動的監聽埠口的觀察,透過 netstat 處理:
[root@localhost ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1016/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 999/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1145/master
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 1007/httpd
tcp6 0 0 :::22 :::* LISTEN 1016/sshd
tcp6 0 0 ::1:631 :::* LISTEN 999/cupsd
上述的 tlnup 可以拆解來看:
- -t :監測 tcp 封包
- -u :監測 udp 封包
- -l :查看監聽中的埠口
- -n :用 IP 與埠口號碼顯示,而不是用主機名稱與服務名稱來顯示,速度較快
- -p :同時顯示 PID 與達成的程式功能!
- 程序識別號碼 PID:與程式的檔名不同,在記憶體中到底要如何確認哪個程式是哪個功能?
其實就是透過程序識別碼的協助來處理的!
- 練習一下:
- 使用程序樹觀察方式,查出 PID 1 號是哪隻程式達成的?
- 承上,找出 rsyslog 的 PID 是幾號呢?
- 使用『 ps -l 』你有看到你的程序是由哪隻程式執行所達成的呢?
- 找出啟動 port 為 22 的是那一隻程式所達成的呢?
- 軟體的安裝與移除,透過 yum 線上管理
- CentOS Linux 主要透過 rpm 這個管理機制來處理軟體的管理,不過 rpm 的指令功能現在只剩下查詢的目的而已。
# 查詢有沒有名為 crontabs 的軟體存在?
[root@localhost ~]# rpm -q crontabs
# 查詢 crontabs 這個軟體的所屬檔案有哪些?
[root@localhost ~]# rpm -ql crontabs
# 查詢 crontabs 的功能是什麼?
[root@localhost ~]# rpm -qi crontabs
# 查詢 /etc/ssh 是由那一個軟體所提供的檔名?
[root@localhost ~]# rpm -qf /etc/ssh
大概都在查詢軟體有沒有存在?軟體提供哪些資料?以及某個檔案是來自於哪個軟體而已~
- 線上安裝,透過 yum 來處理:當有網路以後,可以直接透過 yum 來進行線上的安裝 / 移除等工作喔!
因為 yum 這個指令需要上網,所以請打開右上方的網路連線按鈕,確定有網路之後,才可以繼續工作!
# 查詢有沒有名為 xorg-x11-apps 的軟體存在?
[root@localhost ~]# yum search xorg-x11-apps
# 承上若存在的話,請安裝他!
[root@localhost ~]# yum install xorg-x11-apps
# 請查閱 xorg-x11-apps 總共含有哪些檔案在?
[root@localhost ~]# rpm -ql xorg-x11-apps
# 開始測試執行 xeyes 的軟體
[root@localhost ~]# xeyes (有可能得要用 student 登入者帳號執行!)
# 全系統進行更新的功能
[root@localhost ~]# yum install
可以進行線上安裝、升級、移除等工作,相當的方便!而且最重要的是,全部免費!
- 服務的啟動與關閉
- 當啟動一組程式,這組程式會在背景底下持續工作,並且提供某些特別的服務 (例如網路服務、登入服務、圖形提供驗證服務等等),
這就被稱為『系統服務』。系統服務裡面有針對網路的功能,這就被稱為網路服務!我們得要啟動網路服務,你的 Linux 作業系統才會變成伺服器喔!
- 啟動服務、觀察服務的方式:
# 安裝一隻名為 vsftpd 的軟體
[root@localhost ~]# yum install vsftpd
# 啟動這個 vsftpd 的服務
[root@localhost ~]# systemctl start vsftpd # 立刻啟動
[root@localhost ~]# systemctl enable vsftpd # 下次開機時,這個服務 "預設" 會啟動
[root@localhost ~]# systemctl status vsftpd # 觀察服務 (注意 running 與 enabled)
# 觀察 vsftpd 這個 "網路服務" 所啟動的 port
[root@localhost ~]# netstat -tlunp
[root@localhost ~]# netstat -tlunp | grep vsftpd
你的 Linux 已經是 FTP 伺服器,請打開瀏覽器,在網址列輸入 ftp://localhost 看看有沒有資料,如果需要使用 student 帳號登入,
可以使用 ftp://student@localhost 登入看看。
- 關閉服務的方式
# 關閉 vsftpd 吧
[root@localhost ~]# systemctl stop vsftpd # 立刻關閉
[root@localhost ~]# systemctl disable vsftpd # 下次開機也不會啟動這個服務
- 練習:
- 請觀察系統的網路服務監聽 port,請關閉不必要的服務 (聽老師說,關掉哪些服務這樣)
- 上述的服務在下次開機之後也不會被啟用喔
- 安裝名為 httpd 的軟體,並且啟動該服務,啟動之後,可以在瀏覽器上面使用 http://localhost 查看是否啟動了喔
- 登錄檔的簡易查詢
- 幾乎所有的系統動作都會被記錄在登錄檔當中,常見的登錄檔檔名與紀載資訊
/var/log/secure 跟登入系統有關的資料 (輸入帳號密碼成功與否)
/var/log/maillog 跟郵件有關的訊息
/var/log/messages 幾乎所有的訊息都記錄在這邊
- 登錄檔紀錄的資訊主要的內容是這樣:
[root@localhost ~]# tail /var/log/messages
時間 主機名 服務 訊息
# 最近登入者的資訊
[root@localhost ~]# last
# 最近核心產生的訊息
[root@localhost ~]# dmesg
# 最近安裝的軟體
[root@localhost ~]# tail /var/log/yum.log
- 今日練習:
- 移除 httpd, vsftpd 等軟體 (需要透過 yum remove 喔)
- 安裝名為 squid 的軟體,並且啟動 squid 這個服務,且開機後還會自動啟動這個服務
- 在 root 家目錄,撰寫名為 ans03.txt 的檔案,寫下 squid 啟動的 port number 號碼
- 找出 crond 的程序 PID,並寫在 ans03.txt 檔案內
- 找出 port 69 (或 port 68) 這個 port 啟動的程式名稱是甚麼,寫在 ans03.txt 當中
- 請按右上角的設定,去啟動網路
- 使用 ifconfig 這個指令,找出你的 IP 後,告訴老師你的 IP 號碼 (例如 172.16.8.8),老師會線上檢查你是否完成作業了!