電腦網路與作業系統 電腦網路與作業系統

電腦網路與作業系統上課教材 - 2018 年版

電腦網路與作業系統 > 課程內容 > 第 06 堂課 - 系統的基礎設定(含例行工作排程)

第 06 堂課 - 系統的基礎設定(含例行工作排程)

上次更新日期 2018/03/26

磁碟的分割與檔案系統搞定之後,接下來應該要處理的就是個人帳號與個人權限相關的問題了!因為除了檔案的實際資料外,權限也是需要寫入檔案系統的。

另外,系統安裝完成之後,基礎的設定還是需要優先搞定的。包括語系的資料、語言包的資料、日期時間的調整、 登錄檔資訊的觀察、服務狀態的觀察、網路監聽的觀察等等,都要稍微了解一下。 再者,就是資料經常需要進行備份,備份資料時,能夠壓縮當然最好!那麼如何進行壓縮工作?如何自動進行備份與壓縮? 以及最終如何查詢登錄檔的資訊等等,都需要來理解一下才好。

  • 6.1: Linux 檔案權限初探:chown, chgrp, chmod
  • 6.2: 系統的基礎設定:日期時間、語系資料等
  • 6.3: 檔案的壓縮與打包
  • 6.4: 服務的觀察與管理: netstat 的利用
  • 6.5: 例行工作排程
  • 6.6: 課後練習

6.1: Linux 檔案權限初探:chown, chgrp, chmod

如前所述,FAT 檔案系統是沒有甚麼保障的檔案系統,而其他的檔案系統則有很多的權限與屬性設定等等。 如果你使用 ll 的話,就會看到第一欄位有很多的特殊旗標,主要是 r, w, x 的組合!那是甚麼呢?這需要從 Linux 的傳統權限講起。

  • Linux 帳號與群組

Linux 的檔案權限在設定上,主要依據三種身份來決定,包括:

  • user / owner / 檔案擁有者 / 使用者:就是檔案所屬人
  • group / 群組:這個檔案附屬於那一個群組團隊
  • others / 其他人:不是 user 也沒加入 group 的帳號,就是其他人。
  • 檔案權限的觀察

單純的檔案權限觀察,可以使用 ls -l 或 ll 來查閱,底下為查詢系統 /var/spool/mail 這個目錄的權限方式:

[student@localhost ~]$ ls -ld /var/spool/mail
drwxrwxr-x. 2 root mail 4096  6月 29 03:29 /var/spool/mail
[    A    ][B][C ] [D ] [E ]  [    F     ] [    G        ]

簡單的分析,上述的資料共有七個欄位,每個欄位的意義為:

  1. 檔案類型與權限,第 1 個字元為檔案類型,後續 9 個字元每 3 個一組,共分 3 組,為三種身份的權限;
  2. 檔案連結數,這與檔案系統有關,讀者可暫時略過;
  3. 該檔案的擁有者,本例當中,擁有者身份為 root
  4. 該檔案的所屬群組,本例當中這個檔案屬於 mail 這個群組底下
  5. 這個檔案的容量
  6. 該檔案最後一次被修改/修訂的日期時間
  7. 這個檔案的檔名。

讀者首先可以分析一下這個『檔案』的『類型』。之前讀者應該看過第一個字元為 - 以及 d 的表示方式,事實上還有很多常見的檔案類型, 底下僅為常見的類型介紹:

  • -: 代表後面的檔名為一般檔案
  • d: 代表後面的檔名為目錄檔
  • l: 代表後面的檔名為連結檔 (有點類似 windows 的捷徑概念)
  • b: 代表後面的檔名為一個裝置檔,該裝置主要為區塊裝置,亦即儲存媒體的裝置較多
  • c: 代表後面的檔名為一個週邊裝置檔,例如滑鼠、鍵盤等

所以讀者可以知道 /var/spool/mail 為一個目錄檔案 (d 開頭,為 directory 的縮寫)。確定了檔案類型後,接下來的 9 個字元都是 rwx 與減號而已, 從這 9 個字元判斷,讀者大概可以猜出 rwx 的意義為:

  • r: read,可讀的意思
  • w: write,可寫入/編輯/修改的意思
  • x: eXecutable,可以執行的意思

只不過 rwx 該如何與 root, mail 這個使用者與群組套上關係?我們可以使用下圖來查閱第 1, 3, 4 個欄位的相關性:

使用者、群組與權限的相關性

如上圖所示,第一組為檔案擁有者的權限,第二組為檔案擁有群組的權限,第三組為不是擁有者也沒有加入該群組的其他人權限。 所以上述的檔案權限為:

  • 擁有者為 root,root 具有 rwx 的權限 (第一組權限)
  • 群組設定為 mail,則所有加入 mail 這個群組的帳號可以具有 rwx 的權限 (第二組權限)
  • 不是 root 也沒有加入 mail 的其他人 (例如 student 這個帳號) 具有 rx 的權限 (第三組權限)
在 Linux 底下完成底下的練習:
  1. 使用 ll -d /var/spool/cups 觀察該檔名的特性
  2. 該檔名屬於目錄還是檔案
  3. 該檔名屬於哪個用戶與哪個群組所擁有
  4. 使用者、群組、其他人個別權限為何
  • 檔案屬性與權限的修改方式

檔案的權限與屬性的修改,若以 ls -l 的輸出來說,則每個部份可以修改的指令參照大致如下:

[student@localhost ~]$ cd /dev/shm/
[student@localhost shm]$ touch checking
[student@localhost shm]$ ls -l checking
-rw-rw-r--. 1 student student 0  6月 30 15:16 checking
 [ chmod ]    [chown] [chgrp]    [   touch  ] [  mv  ]

由於一般帳號僅能修改自己檔案的檔名、時間與權限,無法隨意切換使用者與群組的設定。因此底下的例題中, 讀者應該使用 root 的身份來進行處理,方可順利進行。首先,切換身份成為 root ,並且將工作目錄切換到 /dev/shm。 (也就是說,一般使用者還是能夠操作 chmod 以及 touch 等等指令的)

[student@localhost shm]$ su -
password:
[root@localhost ~]# cd /dev/shm
[root@localhost shm]# ll checking
-rw-rw-r--. 1 student student 0  6月 30 15:16 checking

要修改一個檔名 (不論是目錄檔案還是一般檔案) 時,你必須要:

  • 透過類似 ll 或 ls ,加上『相對路徑或絕對路徑』確認該檔名是存在的才能繼續
  • 透過 id 或 grep 或其他方式,確認目標資料是存在的(例如切換的用戶與群組)
  • 實際操作指令。
  • 使用 chown 修改檔案擁有者

查詢系統中是否有名為 daemon 的帳號,如果存在該帳號,請將 checking 的使用者改為 daemon 所擁有,而非 student 所擁有。

[root@localhost shm]# id daemon
uid=2(daemon) gid=2(daemon) groups=2(daemon)
# 這個動作就是在確認目標資料,也就是要切換的用戶帳號是否存在的意思!

[root@localhost shm]# chown daemon checking
[root@localhost shm]# ll checking
-rw-rw-r--. 1 daemon student 0  6月 30 15:16 checking

其實 chown 的功能非常多,chown 也可以用來進行群組的修改,也能同時修改檔案擁有者與群組。建議讀者們應該 man chown 查詢相關語法。

  • 使用 chgrp 修改檔案擁有的群組

系統的群組都紀錄在 /etc/group 檔案內,若想要了解系統是否存在某個群組,可以使用 grep 這個關鍵字擷取指令來查詢。 舉例來說,當系統內有 bin 這個群組時,就將 checking 的群組改為 bin 所有,否則就不予修改。

[root@localhost shm]# grep myname /etc/group
# 不會出現任何資訊,因為沒有這個群組存在的意思。

[root@localhost shm]# grep bin /etc/group
bin:x:1:        <==代表確實有這個群組存在!

[root@localhost shm]# chgrp bin checking
[root@localhost shm]# ll checking
-rw-rw-r--. 1 daemon bin 0  6月 30 15:16 checking
  • 使用 chmod 搭配數字法修改權限

由於檔案紀錄了三種身份,每種身份都擁有 rwx 的最大權限與 --- 沒權限的情況。為了搭配性的方便,於是使用 2 位元的方法來記憶! 亦即是 2 進位的情況:

  • r ==> read    ==> 22 ==> 4
  • w ==> write   ==> 21 ==> 2
  • x ==> eXecute ==> 20 ==> 1

於是每種身份最低為 0 分,最高則為 r+w+x --> 4+2+1 --> 7 分!而因為有 3 種身份,因此使用者,群組,其他人的身份, 最多為 777 最少為 000 。以上述 checking 的分數來說,使用者為 rw=6, 群組為 rw=6,其他人為 r=4,亦即該檔案權限為 664。

例題:讓 daemon 可讀、可寫、可執行 checking,讓加入 bin 群組的用戶可唯讀該檔案,讓其他人沒有權限!
  • daemon 為使用者,可讀可寫可執行則為 rwx = 7
  • 加入 bin 的群組為唯讀,亦即為 r-- = 4
  • 其他人沒權限,因此為 --- = 0
  • 最終可以使用『 chmod 740 checking 』修改權限
[root@localhost shm]# chmod 740 checking
[root@localhost shm]# ll checking
-rwxr-----. 1 daemon bin 0  6月 30 15:16 checking
	
  • 其他屬性的修改

至於檔名的修改則是前一堂課談到的 mv 這個指令。

  1. 使用 root 身份,並且移動工作目錄到 /dev/shm
  2. 將 /etc/fstab 複製到 /dev/shm 底下
  3. 將 /dev/shm/fstab 更改檔名成為 newfs
  4. 讓 newfs 的用戶成為 sshd 、群組成為 wheel
  5. sshd 這個帳號可讀、可寫 newfs,wheel 群組成員僅可讀,其他人則無任何權限
請務必記得,每次做完一個動作後,就立刻以 ll 或 ls -l 去查閱預計要變換的資料區塊欄位是否正確喔!

6.2: 系統的基礎設定:日期時間、語系資料等

系統安裝好或者是你初次接觸系統時,應該要確認一下一些基礎設定是否正確,否則你的資料經常會出問題。舉例來說, 最容易出錯的可能是系統時間、主機名稱以及語系資料等,這都需要來了解一下比較妥當。

  • 日期與時間設定

早期的作業系統如 windows 98 以前的環境,由於網路校時的網路時間伺服器 (Network Time Server) 搭配的網路時間協定 (Network Time Protocol, NTP) 還不是這麼流行,所以一般的電腦日期都只是跟著 BIOS 的時間鐘來跑,而 BIOS 時間鐘可能因為 (1)主機板電池沒電了 (2)電子鐘原本的時間誤差, 所以就會導致系統時間的不準確。

目前由於系統時間大多透過網路自動校時 (系統會自動的往外處理時間伺服器的同步要求),因此大家好像都沒有手動調整時間的經驗了。 不過,windows 可能預設使用其他國家的 NTP 伺服器,時間同步的問題比較大。可以修改成台灣的時間伺服器比較好。 而在崑山校園內,當然預設要使用崑山的時間伺服器了。

  • 台灣地區:tw.pool.ntp.org, tick.stdtime.gov.tw, time.stdtime.gov.tw...
  • 崑山校內:ntp.ksu.edu.tw
在 windows 底下修改你的時間伺服器設定
  1. 從開始程式集點選『設定』項目,出現的視窗中,點選『時間與語言』按鈕圖示
  2. 在出現的新視窗,最右側點選『其他日期、時間及區域設定』項目
  3. 點選『設定時間和日期』項目
  4. 新出現的視窗點選『網際網路時間』頁面,然後點選『變更設定』,輸入你所在的適合的 NTP 伺服器主機名稱就可以了。

Linux 的校時可以使用手動更新網際網路日期,也能夠使用自動更新方式來處理。先來觀察目前的設定值項目。

[root@localhost ~]# timedatectl
      Local time: 一 2018-03-26 09:56:13 CST
  Universal time: 一 2018-03-26 01:56:13 UTC
        RTC time: 一 2018-03-26 09:56:12
       Time zone: Asia/Taipei (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

會有所謂的本地時間 (Local time) 以及標準時間 (Universal time),兩者差 8 小時左右。若需要修改時間,可以使用類似 "2018-03-30 14:00:00" 的方式來手動修改。 不過,你需要 timedatectl --help 來查詢相關的指令設定方法喔。

請使用 timedatectl 來設定目前相對正確的時間與日期在你的 Linux 系統上。

除了自行設定之外,讀者亦可透過網路來進行時間的校正。以崑山科大來說,崑山科大提供了 ntp.ksu.edu.tw 這個 NTP 伺服器,因此網路校時可以簡單的進行:

[root@localhost ~]# ntpdate ntp.ksu.edu.tw
10 May 11:28:30 ntpdate[18839]: step time server 120.114.100.1 offset -28784.726606 sec
[root@localhost ~]# hwclock -w

如上表所示,某些特殊的環境下,台灣的時間會快了 8 小時,這是因為虛擬機使用了格林威治時間所致。校正後系統即可正確設定。那有沒有辦法讓系統自動校正時間? 可以的,不過 CentOS 得要啟動一個網路服務才行,這個服務名稱為 chronyd 服務,設定檔在 /etc/chrony.conf 當中。 你可以簡單的使用 root 的身份下達 gedit /etc/chrony.conf 來編輯這個檔案,之後啟動網路服務即可。

在 Linux 系統下,自動網路校時的設定:
  1. 以 root 的身份,下達『 gedit /etc/chrony.conf 』,然後將底下的資料進行一些修訂的工作:
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server ntp.ksu.edut.w iburst
    
  2. 修改完畢 (四個 server 加上註解,增加一個崑大的 NTP 伺服器即可),然後重新啟動服務即可:
    [root@localhost ~]# systemctl enable  chronyd
    [root@localhost ~]# systemctl restart chronyd
    [root@localhost ~]# systemctl status  chronyd
    
  3. 最終以 chronyc tracking 追蹤一下是否連結上 NTP 伺服器了。
    [root@localhost ~]# chronyc tracking
    Reference ID    : 120.114.100.1 (ntp.ksu.edu.tw)
    Stratum         : 4
    Ref time (UTC)  : Mon Apr  3 06:38:52 2017
    System time     : 0.000042931 seconds slow of NTP time
    Last offset     : -0.000060345 seconds
    RMS offset      : 0.000033498 seconds
    Frequency       : 19.614 ppm slow
    Residual freq   : -0.102 ppm
    Skew            : 0.959 ppm
    Root delay      : 0.008587 seconds
    Root dispersion : 0.054062 seconds
    Update interval : 64.2 seconds
    Leap status     : Normal
    

未來系統就會持續自己更新時間了!

  • 變更語系資料

在 Linux 的環境下,登入系統時,取得 bash 之後,會有預設的語系資料,預設讀者的環境應該是 zh_TW.utf8 這個語系。但是圖形界面登入處預設為英文語系, 那個環境即為『系統語系』的相關設定。讀者可以使用 locale 來查閱目前的語系,而使用 localectl 來查閱系統的預設語系。

[root@localhost ~]# localectl
   System Locale: LANG=zh_TW.UTF-8
       VC Keymap: cn
      X11 Layout: cn
     X11 Options: grp:ctrl_shift_toggle

若想要讓圖形界面的畫面以台灣中文為主,可以使用如下的方式來處置:

# 請在 tty2 以後的界面處理,且請事先登出圖形界面
[root@localhost ~]# localectl set-locale LANG=zh_TW.utf8
[root@localhost ~]# systemctl isolate multi-user.target
[root@localhost ~]# systemctl isolate graphical.target

那個 systemctl isolate 會關閉你的圖形界面後再次啟動,所以請在 tty2 以後的面執行喔!且執行前務必要登出圖形界面才好!

如果是 windows 系統想要變更語言的話,由於 windows 是分不同國家語系來販售的,所以預設的情況下,系統並沒有提供適當的語言包。 所以,如果想要轉換語系,就得要自己下載語言包。不過,windows 10 可以透過系統的設定值來自動下載語言包喔!

假設你想要增加簡體中文的語言包給大陸的朋友來操作系統,可以這樣測試看看:
  1. 從開始程式集按下『設定』,選擇『時間與語言』項目按鈕
  2. 按下左側的『地區與語言』項目,然後選擇中央的『新增語言』的正 (+) 字號,就可以選擇你要的語系。
  3. 增加語系後,點選你新增的語系,就會出現『下載語言套件』的按鈕,按下去吧!
  4. 如果要完整的變更語系,可能得要修改『預設語系』的項目了!

6.3: 檔案的壓縮與打包

許多時刻讀者應該會進行檔案系統的壓縮與打包,讓系統的備份資料或者是減少資料的使用空間。同時,程式設計師在網路提供資料時, 為了降低頻寬使用率,更好的壓縮比會是資料壓縮的考量選項之一。

  • Linux 底下,檔案的壓縮指令

常見的壓縮/解壓縮指令為 gzip, bzip2, xz 三種,gzip 壓縮比較差,不過運算速度最快。xz 壓縮比最好,但是運算速度最慢。 基本上,目前我們還是比較常用 gzip 啦!另外,預設的情況下,檔案被壓縮後,原本的檔案會消失喔!同時,壓縮後的檔名會被更改。

  • gzip: *.gz
  • bzip2: *.bz2
  • xz: *.xz
  1. 先移動你的工作目錄到 /dev/shm 底下
  2. 將 /etc/services 複製到本目錄,並且分別複製出 service1, service2, service3 這三個檔案喔!
  3. 分別使用 gzip, bzip2, xz 對三個檔案做壓縮。
  4. 觀察 (1)原本的檔名是否存在? (2)壓縮後的檔名變成什麼? (3)檔案容量大小的比較。
  5. 使用 file 這個指令來觀察一下三個檔案的內容資料為何
  6. 分別使用 gzip, bzip2, xz 搭配 -d 這個選項來進行解壓縮。
  • Windows 的打包指令 7z 自由軟體

如果是 windows 系統的壓縮指令,除了 windows 本身支援的軟體之外,也可以使用 7z 這個自由軟體喔!相關連結在底下:

你可以下載 64 位元或 32 位元的軟體,如果不知道你的作業系統等級,就使用 32 位元即可。下載完畢之後,在檔案總管操作行為中, 在你要壓縮的檔案或目錄按下右鍵,直接選擇 7z 來壓縮即可。

請將你 windows 使用者的『下載』目錄,整個壓縮成為 c:\download.zip 檔案。 此時你會發現原本的下載目錄還是存在的!只是額外有備份的打包檔案存在而已。
  • Linux 的打包指令: tar

因為 gzip, bzip2, xz 主要是針對單一檔案來進行壓縮,對於類似 windows 提供的 winRAR, zip, 7-zip 等可以將多數檔案打包成為一個檔案的用法來說, 這些壓縮指令是無法達到的。不過,Linux 環境底下有提供名為 tar 的打包指令,這個指令也可以使用 gzip, bzip2, xz 的函數來打包並壓縮, 讀者可以將 tar 想成 7-zip 就是了。

tar 的基本語法有點像這樣:

[root@localhost ~]# tar [-z|j|J] -c|-t|-x [-v] [-f tar 支援的檔名] [filename...]

使用 tar 後續接的選項,你可以這樣思考:

  • [-z|j|J] :是否需要壓縮支援,三個選項分別是 gzip, bzip2, xz 的支援 (都不加則代表不壓縮)
  • -c|-t|-x :實際進行的任務,三個選項分別是打包、查閱資料、解打包
  • -v :是否要查閱指令執行過程
  • [-f tar 支援的檔名] :使用 -f 來處理 tar 的檔案

我們很常進行將 /etc/ 完整備份的任務,假設我們要將 /etc 使用最大壓縮比的 xz 壓縮備份,可以這樣做:

[root@localhost ~]# cd /dev/shm/zip
[root@localhost zip]# tar -Jcv -f etc.tar.xz /etc
[root@localhost zip]# ll etc*
-rw-r--r--. 1 root root 5635764  5月 11 11:57 etc.tar.xz

一般來說,tar 的副檔名是可以隨意取的,亦即上方的 etc.tar.xz 。不過最好搭配 tar 以及壓縮指令的副檔名較佳,因此常見的副檔名為:

  • *.tar:單純的 tar 並沒有壓縮
  • *.tar.gz:支援 gzip 壓縮的 tar 檔案
  • *.tar.bz2:支援 bzip2 壓縮的 tar 檔案
  • *.tar.xz:支援 xz 壓縮的 tar 檔案

若需要查看 etc.tar.xz 的檔案內容,可以使用如下的方式來查看:

[root@localhost zip]# tar -Jtv -f etc.tar.xz 
.......
-rw-r--r-- root/root        11 2016-05-10 19:06 etc/hostname
-rw-r--r-- root/root       163 2016-02-18 02:54 etc/.updated
-rw-r--r-- root/root     12288 2016-02-18 18:42 etc/aliases.db

只要將 -c 改成 -t 即可查閱壓縮檔案的內容,同時讀者也很清楚的看到,檔名的項目『已經移除了根目錄』! 因此,解打包 tar 檔案時,預設會在工作目錄解開檔名。若需要在不同的目錄下解開,就需要搭配 -C 的選項才行 (man tar)。

  1. 先使用 file 確認 etc.tar.xz 所支援的壓縮指令為何
  2. 分別將 etc.tar.xz 在本目錄與 /tmp 目錄解開。
  3. 如何將 /etc /home /var/spool/mail /root 等目錄備份成為 /backups/system-YYYY-MM-DD.tar.gz 呢?

6.4: 服務的觀察與管理: netstat 的利用

基本上,如果是網路服務的話,啟動之後,應該都會有開啟一個網路埠口 (port)。要觀察埠口,就使用 netstat 來觀察即可。 很特別的是, windows 與 linux 都是使用 netstat 這個指令~只是參數不一樣罷了。

在 windows 系統上,打開命令提示字元,觀察一下目前的連線狀態:
  1. 直接輸入『 netstat -n 』查看一下目前已經在連線狀態中的連線模式。並請理解 IP:port 的意義。
  2. 輸入『 netstat -an 』查詢 LISTENING 的項目,那就是監聽中的埠口 (不是連線中)

如果是 Linux 的環境,可能得要加上底下的參數會比較好:『 netstat -tlunp 』可以了解到已經啟動的服務以及啟動該服務的軟體名稱喔。

  • 服務的安裝、啟動、開機啟動與防火牆的簡易設定

如果你想要啟用一個網路服務,那麼你應該要事先安裝好該服務,然後啟動該服務,如果確定該服務會持續提供給網際網路, 那就應該要設定開機啟動,同時給予放行防火牆的設定才行。基本上的口訣可以是:

  • 安裝
  • 啟動
  • 開機啟動
  • 防火牆
  • 測試與觀察

假設你已經啟動了網路,那麼使用預設的方式就可以直接安裝網路伺服器軟體。舉例來說,我們如果想要讓你的 Linux 成為 Web server (WWW), 那麼應該得要安裝 httpd 這個軟體,同時啟動他!因此,你可以這樣處理:

# 1. 使用 yum 這個指令來安裝我們所需要的軟體:
[root@localhost ~]# yum install httpd

# 2. 若安裝妥當,直接啟用這個服務即可:
[root@localhost ~]# systemctl start httpd

# 3. 如果覺得這個軟體啟動也沒有問題,希望下次重新開機也能提供服務,那就這樣:
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl status httpd

# 4. 如果要讓網際網路的用戶來查詢我們的 Web server,那就要放行防火牆才行!
[root@localhost ~]# firewall-cmd --add-service=http --permanent
[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# firewall-cmd --list-all

# 5. 最終就直接使用瀏覽器來測試一下吧!

現在,請打開瀏覽器,在網址列輸入: http://localhost 看看有沒有網頁資訊?若有,就代表你的 Linux 已經變成一部網頁伺服器了。 然後,讓我們隨意製作一個網頁:

  • 網頁伺服器的所有頁面預設放在 /var/www/html 目錄下
  • 網頁伺服器的首頁檔名預設稱為 index.html
  • 請使用 root 的身份執行『 gedit /var/www/html/index.html 』然後直接輸入你的姓名與學號,儲存後離開
  • 回到瀏覽器,直接刷新一下 http://localhost 的頁面,你看到什麼?
  • 使用 ifconfig 找尋『 inet 』關鍵字,但是忽略 127.0.0.1 這個 IP。你會得到你的 IP
  • 請告知同學你的 IP,讓他瀏覽你的網站~同時,你也瀏覽同學的網站,看看有沒有順利瀏覽的到?

如果要關掉這個服務,很簡單!只要透過底下的動作來處理即可。

[root@localhost ~]# systemctl stop httpd
[root@localhost ~]# systemctl disable httpd

6.5: 例行工作排程

很多時候你可能需要使用工作排程,讓系統自動去完成某些事情才好!一般來說,備份就是這麼件重要的事情。那如何讓系統自動進行備份呢? 就得要透過工作排程軟體的支援了。

  • Windows 的工作排程

windows 的工作排程的執行可以打開檔案總管,按下右鍵,選擇『管理』之後,就會在左側出現工作排程器!點下去就對了。 點完之後有點像底下的模樣,記得,左側點選工作排程器,才會出現正中央的資訊喔!

windows 工作排程器

在上圖中的右側有可以建立工作排程的功能,分別是『建立基本工作』與『建立工作』。因為我們的系統可能還有其他人在, 因此,最好不要影響到其他人的操作~所以,我們只好選擇『建立工作』而不要用其他的,否則怕會影響到其他人。 但如果這部主機是你自己擁有的,那當然使用的就會變成『建立基本工作』才對了。

windows 工作排程器

如上圖所示,按下建立工作後會出現上述圖示!目前我們想要來設計一個自動關機的流程,因此在名稱及描述的地方寫好每天 2:00am 會自動關機的動作。 之後就按下『動作』的頁面,會出現如下圖示:

windows 工作排程器

出現這個資料就是要讓我們填寫指令囉!請按下上圖中的『新增』來處理!

windows 工作排程器

畫面中輸入指令名稱,然後填寫好外帶的參數,按下確定即可喔!

windows 工作排程器

最後回到原本的畫面,點選左側的工作排程器以及程式庫,就可以看到你的工作囉!也可以雙擊工作重新修改你的指令碼!

事實上,上面的流程少了一步驟,就是挑選時間。請依據剛剛的流程,重新檢測,哪一個步驟可以讓你的關機設定好每天 2:00am 這個動作呢?
  • Linux 的工作排程

相對於 windows 的圖形界面,Linux 的文字界面就顯的簡單的多。基本上,你只要知道底下的表格內容即可設定:

代表意義分鐘小時 日期月份指令
數字範圍0-590-231-311-120-7 指令最好使用絕對路徑

週的數字為 0 或 7 時,都代表『星期天』的意思!另外,還有一些輔助的字符,大概有底下這些:

特殊字符代表意義
*(星號)代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續指令』的意思!
,(逗號)代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * * * command
時間參數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-(減號)代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
20 8-12 * * * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n(斜線)那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
*/5 * * * * command
用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

接下來只要透過修改 /etc/crontab 就可以設計好你所需要的工作了。舉例來說,你想要讓系統每天早上 4 點自動使用 tar 進行備份, 就使用『 gedit /etc/crontab 』之後,加上這一段即可:

0 4 * * * root [這裡填你要的指令]
如果你想要讓系統每個上課的時候,在下課後 60 分鐘之後,自動關機呢?關機的指令為 poweroff 喔!

6.6: 課後練習

請使用 word 檔案 (.doc 或 .docx) 進行下列題目的撰寫(某些題目需要加上圖檔),且檔案容量請不要超過 2MBytes 以上, 以 1Mbytes 為宜,亦即你的圖檔需要限制解析度,並請注意:

  • 首次使用上傳系統時,務必使用 pietty 更改一次密碼,並請將密碼自己記憶下來,未來不能隨時變更密碼的。
  • 檔名請設定為: os_4XXXCYYY_unit06.doc (4XXXCYYY 是你的學號,請填正確,有分大小寫,請確認)
  • 請使用 filezilla 搭配 FTP 協定 (port 21) 上傳
  • 請上傳到你家目錄底下的 os 目錄中 (若不存在,請自行建立該目錄)

開始本章節題目:

  1. 使用你會的方式觀察 /etc/chrony.keys 這個檔名,並且回答 (0)請將你的觀察畫面拍下來貼上 (1)這個檔名屬於目錄/檔案/連結檔還是裝置檔? (2)這個檔名所屬的用戶名稱 (3)這個檔名所屬群組為何? (4)student 對於這個檔名有什麼權限?
  2. 使用各種方法去觀察 /dev/tty3 這個檔名,並且將觀察結果拍下來。然後回答這個檔名屬於目錄/檔案/連結檔還是裝置檔?
  3. 完成底下的實做:
    • 將 /etc/pam.d/login 複製成為 /dev/shm/4XXXCXXX/login.txt ,其中 4XXXCXXX 為你的學號
    • 將 login.txt 變成 adm 擁有,且群組變更為 sys 。
    • adm 具有可讀、可寫的權限, sys 具有可讀的權限,其他人不具任何權限。
    • 使用『 ls -l /dev/shm/4XXXCXXX/login.txt 』,將結果拍照輸出。
  4. 在崑山,你的 windows/Linux 要網路校時,你應該要使用哪一個 NTP 伺服器 (寫下主機名稱)。如果是在非校園內的主機, 例如你自己的 notebook,最好使用哪一個 NTP 伺服器 (寫下主機名稱,最好是使用台灣的主機喔!)
  5. 將 /etc 與 /root 進行三次備份 (也就是得要下達三次指令),備份的檔名會是 /backups/myetc.tar.gz, /backups/myetc.tar.bz2, /backups/myetc.tar.xz。 完成你的備份後,執行底下的指令後拍照上傳『 ls -l /backups/myetc.tar*; file /backups/myetc.tar* 』
  6. 有個 FTP 的軟體名稱為 vsftpd,請以我們課堂上講的方式來讓你的 Linux 變成 FTP 伺服器。完成動作之後,請輸入底下的指令,並且拍照回傳: 『 systemctl status vsftpd; firewall-cmd --list-all 』
  7. 關閉 chronyd 這個服務,且永遠都不會啟用該服務。請關閉完成後,下達『 systemctl status chronyd 』拍照並回傳。
  8. 透過 Linux 工作排程,讓你的系統可以在每天深夜 11:00pm ,以 ntpdate 進行一次針對崑山科大的 NTP 伺服器校時的任務。