伺服器建置實務上課補充教材


unit 03:Linux 的基礎操作實務
程序的觀察、軟體的安裝與移除、服務的啟動與關閉、登錄檔的簡易查詢
  1. 程序的觀察:
    1. 先來了解程序 (process) 與程式 (program) 的差別:
      • 程式:放在儲存媒體上,以檔案的型態存在的資料。
      • 程序:當程式被執行後,會在記憶體裡面產生一個區塊,存放這些可以運作的程式碼與資料,就是所謂的程序。
      所以,程式是在硬碟中,程序是在記憶體當中!兩者差很多!
    2. 查看全系統中的程序方式:
      # 查看程序樹的方式
      [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 畫面喔!
    3. 網路已經啟動的監聽埠口的觀察,透過 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 與達成的程式功能!
    4. 程序識別號碼 PID:與程式的檔名不同,在記憶體中到底要如何確認哪個程式是哪個功能? 其實就是透過程序識別碼的協助來處理的!
    5. 練習一下:
      • 使用程序樹觀察方式,查出 PID 1 號是哪隻程式達成的?
      • 承上,找出 rsyslog 的 PID 是幾號呢?
      • 使用『 ps -l 』你有看到你的程序是由哪隻程式執行所達成的呢?
      • 找出啟動 port 為 22 的是那一隻程式所達成的呢?
  2. 軟體的安裝與移除,透過 yum 線上管理
    1. 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
      
      大概都在查詢軟體有沒有存在?軟體提供哪些資料?以及某個檔案是來自於哪個軟體而已~
    2. 線上安裝,透過 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
      
      可以進行線上安裝、升級、移除等工作,相當的方便!而且最重要的是,全部免費!
  3. 服務的啟動與關閉
    1. 當啟動一組程式,這組程式會在背景底下持續工作,並且提供某些特別的服務 (例如網路服務、登入服務、圖形提供驗證服務等等), 這就被稱為『系統服務』。系統服務裡面有針對網路的功能,這就被稱為網路服務!我們得要啟動網路服務,你的 Linux 作業系統才會變成伺服器喔!
    2. 啟動服務、觀察服務的方式:
      # 安裝一隻名為 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 登入看看。
    3. 關閉服務的方式
      # 關閉 vsftpd 吧
      [root@localhost ~]# systemctl stop    vsftpd  # 立刻關閉
      [root@localhost ~]# systemctl disable vsftpd  # 下次開機也不會啟動這個服務
      
    4. 練習:
      • 請觀察系統的網路服務監聽 port,請關閉不必要的服務 (聽老師說,關掉哪些服務這樣)
      • 上述的服務在下次開機之後也不會被啟用喔
      • 安裝名為 httpd 的軟體,並且啟動該服務,啟動之後,可以在瀏覽器上面使用 http://localhost 查看是否啟動了喔
  4. 登錄檔的簡易查詢
    1. 幾乎所有的系統動作都會被記錄在登錄檔當中,常見的登錄檔檔名與紀載資訊
      /var/log/secure    跟登入系統有關的資料 (輸入帳號密碼成功與否)
      /var/log/maillog   跟郵件有關的訊息
      /var/log/messages  幾乎所有的訊息都記錄在這邊
      
    2. 登錄檔紀錄的資訊主要的內容是這樣:
      [root@localhost ~]# tail /var/log/messages
      時間   主機名    服務    訊息
      
      # 最近登入者的資訊
      [root@localhost ~]# last
      
      # 最近核心產生的訊息
      [root@localhost ~]# dmesg
      
      # 最近安裝的軟體
      [root@localhost ~]# tail /var/log/yum.log
      
  5. 今日練習:
    1. 移除 httpd, vsftpd 等軟體 (需要透過 yum remove 喔)
    2. 安裝名為 squid 的軟體,並且啟動 squid 這個服務,且開機後還會自動啟動這個服務
    3. 在 root 家目錄,撰寫名為 ans03.txt 的檔案,寫下 squid 啟動的 port number 號碼
    4. 找出 crond 的程序 PID,並寫在 ans03.txt 檔案內
    5. 找出 port 69 (或 port 68) 這個 port 啟動的程式名稱是甚麼,寫在 ans03.txt 當中
    6. 請按右上角的設定,去啟動網路
    7. 使用 ifconfig 這個指令,找出你的 IP 後,告訴老師你的 IP 號碼 (例如 172.16.8.8),老師會線上檢查你是否完成作業了!
Top
HOME