第 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 個字元為檔案類型,後續 9 個字元每 3 個一組,共分 3 組,為三種身份的權限;
- 檔案連結數,這與檔案系統有關,讀者可暫時略過;
- 該檔案的擁有者,本例當中,擁有者身份為 root
- 該檔案的所屬群組,本例當中這個檔案屬於 mail 這個群組底下
- 這個檔案的容量
- 該檔案最後一次被修改/修訂的日期時間
- 這個檔案的檔名。
讀者首先可以分析一下這個『檔案』的『類型』。之前讀者應該看過第一個字元為 - 以及 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 的權限 (第三組權限)
- 使用 ll -d /var/spool/cups 觀察該檔名的特性
- 該檔名屬於目錄還是檔案
- 該檔名屬於哪個用戶與哪個群組所擁有
- 使用者、群組、其他人個別權限為何
- 檔案屬性與權限的修改方式
檔案的權限與屬性的修改,若以 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 為使用者,可讀可寫可執行則為 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 這個指令。
- 使用 root 身份,並且移動工作目錄到 /dev/shm
- 將 /etc/fstab 複製到 /dev/shm 底下
- 將 /dev/shm/fstab 更改檔名成為 newfs
- 讓 newfs 的用戶成為 sshd 、群組成為 wheel
- sshd 這個帳號可讀、可寫 newfs,wheel 群組成員僅可讀,其他人則無任何權限
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
- 從開始程式集點選『設定』項目,出現的視窗中,點選『時間與語言』按鈕圖示
- 在出現的新視窗,最右側點選『其他日期、時間及區域設定』項目
- 點選『設定時間和日期』項目
- 新出現的視窗點選『網際網路時間』頁面,然後點選『變更設定』,輸入你所在的適合的 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 來查詢相關的指令設定方法喔。
除了自行設定之外,讀者亦可透過網路來進行時間的校正。以崑山科大來說,崑山科大提供了 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 來編輯這個檔案,之後啟動網路服務即可。
- 以 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
- 修改完畢 (四個 server 加上註解,增加一個崑大的 NTP 伺服器即可),然後重新啟動服務即可:
[root@localhost ~]# systemctl enable chronyd [root@localhost ~]# systemctl restart chronyd [root@localhost ~]# systemctl status chronyd
- 最終以 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 可以透過系統的設定值來自動下載語言包喔!
- 從開始程式集按下『設定』,選擇『時間與語言』項目按鈕
- 按下左側的『地區與語言』項目,然後選擇中央的『新增語言』的正 (+) 字號,就可以選擇你要的語系。
- 增加語系後,點選你新增的語系,就會出現『下載語言套件』的按鈕,按下去吧!
- 如果要完整的變更語系,可能得要修改『預設語系』的項目了!
6.3: 檔案的壓縮與打包
許多時刻讀者應該會進行檔案系統的壓縮與打包,讓系統的備份資料或者是減少資料的使用空間。同時,程式設計師在網路提供資料時, 為了降低頻寬使用率,更好的壓縮比會是資料壓縮的考量選項之一。
- Linux 底下,檔案的壓縮指令
常見的壓縮/解壓縮指令為 gzip, bzip2, xz 三種,gzip 壓縮比較差,不過運算速度最快。xz 壓縮比最好,但是運算速度最慢。 基本上,目前我們還是比較常用 gzip 啦!另外,預設的情況下,檔案被壓縮後,原本的檔案會消失喔!同時,壓縮後的檔名會被更改。
- gzip: *.gz
- bzip2: *.bz2
- xz: *.xz
- 先移動你的工作目錄到 /dev/shm 底下
- 將 /etc/services 複製到本目錄,並且分別複製出 service1, service2, service3 這三個檔案喔!
- 分別使用 gzip, bzip2, xz 對三個檔案做壓縮。
- 觀察 (1)原本的檔名是否存在? (2)壓縮後的檔名變成什麼? (3)檔案容量大小的比較。
- 使用 file 這個指令來觀察一下三個檔案的內容資料為何
- 分別使用 gzip, bzip2, xz 搭配 -d 這個選項來進行解壓縮。
- Windows 的打包指令 7z 自由軟體
如果是 windows 系統的壓縮指令,除了 windows 本身支援的軟體之外,也可以使用 7z 這個自由軟體喔!相關連結在底下:
你可以下載 64 位元或 32 位元的軟體,如果不知道你的作業系統等級,就使用 32 位元即可。下載完畢之後,在檔案總管操作行為中, 在你要壓縮的檔案或目錄按下右鍵,直接選擇 7z 來壓縮即可。
- 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)。
- 先使用 file 確認 etc.tar.xz 所支援的壓縮指令為何
- 分別將 etc.tar.xz 在本目錄與 /tmp 目錄解開。
- 如何將 /etc /home /var/spool/mail /root 等目錄備份成為 /backups/system-YYYY-MM-DD.tar.gz 呢?
6.4: 服務的觀察與管理: netstat 的利用
基本上,如果是網路服務的話,啟動之後,應該都會有開啟一個網路埠口 (port)。要觀察埠口,就使用 netstat 來觀察即可。 很特別的是, windows 與 linux 都是使用 netstat 這個指令~只是參數不一樣罷了。
- 直接輸入『 netstat -n 』查看一下目前已經在連線狀態中的連線模式。並請理解 IP:port 的意義。
- 輸入『 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 的工作排程的執行可以打開檔案總管,按下右鍵,選擇『管理』之後,就會在左側出現工作排程器!點下去就對了。 點完之後有點像底下的模樣,記得,左側點選工作排程器,才會出現正中央的資訊喔!
在上圖中的右側有可以建立工作排程的功能,分別是『建立基本工作』與『建立工作』。因為我們的系統可能還有其他人在, 因此,最好不要影響到其他人的操作~所以,我們只好選擇『建立工作』而不要用其他的,否則怕會影響到其他人。 但如果這部主機是你自己擁有的,那當然使用的就會變成『建立基本工作』才對了。
如上圖所示,按下建立工作後會出現上述圖示!目前我們想要來設計一個自動關機的流程,因此在名稱及描述的地方寫好每天 2:00am 會自動關機的動作。 之後就按下『動作』的頁面,會出現如下圖示:
出現這個資料就是要讓我們填寫指令囉!請按下上圖中的『新增』來處理!
畫面中輸入指令名稱,然後填寫好外帶的參數,按下確定即可喔!
最後回到原本的畫面,點選左側的工作排程器以及程式庫,就可以看到你的工作囉!也可以雙擊工作重新修改你的指令碼!
- Linux 的工作排程
相對於 windows 的圖形界面,Linux 的文字界面就顯的簡單的多。基本上,你只要知道底下的表格內容即可設定:
代表意義 | 分鐘 | 小時 | 日期 | 月份 | 週 | 指令 |
數字範圍 | 0-59 | 0-23 | 1-31 | 1-12 | 0-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 [這裡填你要的指令]
6.6: 課後練習
請使用 word 檔案 (.doc 或 .docx) 進行下列題目的撰寫(某些題目需要加上圖檔),且檔案容量請不要超過 2MBytes 以上, 以 1Mbytes 為宜,亦即你的圖檔需要限制解析度,並請注意:
- 首次使用上傳系統時,務必使用 pietty 更改一次密碼,並請將密碼自己記憶下來,未來不能隨時變更密碼的。
- 檔名請設定為: os_4XXXCYYY_unit06.doc (4XXXCYYY 是你的學號,請填正確,有分大小寫,請確認)
- 請使用 filezilla 搭配 FTP 協定 (port 21) 上傳
- 請上傳到你家目錄底下的 os 目錄中 (若不存在,請自行建立該目錄)
開始本章節題目:
- 使用你會的方式觀察 /etc/chrony.keys 這個檔名,並且回答 (0)請將你的觀察畫面拍下來貼上 (1)這個檔名屬於目錄/檔案/連結檔還是裝置檔? (2)這個檔名所屬的用戶名稱 (3)這個檔名所屬群組為何? (4)student 對於這個檔名有什麼權限?
- 使用各種方法去觀察 /dev/tty3 這個檔名,並且將觀察結果拍下來。然後回答這個檔名屬於目錄/檔案/連結檔還是裝置檔?
- 完成底下的實做:
- 將 /etc/pam.d/login 複製成為 /dev/shm/4XXXCXXX/login.txt ,其中 4XXXCXXX 為你的學號
- 將 login.txt 變成 adm 擁有,且群組變更為 sys 。
- adm 具有可讀、可寫的權限, sys 具有可讀的權限,其他人不具任何權限。
- 使用『 ls -l /dev/shm/4XXXCXXX/login.txt 』,將結果拍照輸出。
- 在崑山,你的 windows/Linux 要網路校時,你應該要使用哪一個 NTP 伺服器 (寫下主機名稱)。如果是在非校園內的主機, 例如你自己的 notebook,最好使用哪一個 NTP 伺服器 (寫下主機名稱,最好是使用台灣的主機喔!)
- 將 /etc 與 /root 進行三次備份 (也就是得要下達三次指令),備份的檔名會是 /backups/myetc.tar.gz, /backups/myetc.tar.bz2, /backups/myetc.tar.xz。 完成你的備份後,執行底下的指令後拍照上傳『 ls -l /backups/myetc.tar*; file /backups/myetc.tar* 』
- 有個 FTP 的軟體名稱為 vsftpd,請以我們課堂上講的方式來讓你的 Linux 變成 FTP 伺服器。完成動作之後,請輸入底下的指令,並且拍照回傳: 『 systemctl status vsftpd; firewall-cmd --list-all 』
- 關閉 chronyd 這個服務,且永遠都不會啟用該服務。請關閉完成後,下達『 systemctl status chronyd 』拍照並回傳。
- 透過 Linux 工作排程,讓你的系統可以在每天深夜 11:00pm ,以 ntpdate 進行一次針對崑山科大的 NTP 伺服器校時的任務。