第4章 第4周課前測試考試題html
4.1 定時任務規則的含義01linux
第1題 若是在某用戶的crontab文件中有如下記錄,該行中的命令多久執行一次(RHCE考試題)?( ) 30 4 * * 3 mycmd 正則表達式
A. 每小時。 B. 每週。 C. 每一年三月中每小時一次。shell
解答:每週三的4點30分,執行mycmd。vim
4.2 定時任務規則的含義02安全
第2題 若是在某用戶的crontab文件中有如下記錄,該行中的命令多久執行一次(RHCE考試題)?( )*/5 * * * * mycmd bash
A. 每5分鐘一次。 B. 每小時過5分鐘。 C. 不會運行,格式無效。ide
解答:每隔5分鐘,執行mycmd。學習
4.3 如何書寫定時任務測試
第3題 每隔1分鐘,打印一個+號到oldboy.log,請給出crontab完整命令。
解答:
crontab -e * * * * * echo '+' >>oldboy.log */1 * * * * echo '+' >>oldboy.log# 等價於上一條命令
4.4 定時任務:按小時打包文件
第4題 每隔2個小時將/etc/services文件打包備份到/tmp下(最好每次備份成不一樣的備份包)。
解答:
(1) 命令行測試
[root@lb01 ~]# cd /etc [root@lb01 etc]# tar zcf /tmp/services_bak_`date +%F-%H`.tar.gz ./services
檢查
[root@lb01 etc]# ll /tmp/services_bak_2016-08-26-23.tar.gz -rw-r--r-- 1 root root 127304 2016-08-26 23:21 /tmp/services_bak_2016-08-26-23.tar.gz [root@lb01 etc]# du -h /tmp/services_bak_2016-08-26-23.tar.gz 128K /tmp/services_bak_2016-08-26-23.tar.gz
(2) 編寫腳本
[root@lb01 etc]# mkdir /server/scripts -p# 規範腳本路徑 [root@lb01 scripts]# vim /server/scripts/services_bak.sh #/bin/sh cd /etc && \ /bin/tar zcf /tmp/services_bak_`date +%F-%H`.tar.gz ./services
(3) 測試腳本
[root@lb01 scripts]# /bin/sh /server/scripts/services_bak.sh [root@lb01 scripts]# ll /tmp/services_bak_2016-08-26-23.tar.gz -rw-r--r-- 1 root root 127304 2016-08-26 23:28 /tmp/services_bak_2016-08-26-23.tar.gz
(4) 編輯crontab
[root@lb01 scripts]# crontab -e ## tar file '/etc/services' to /tmp every 2 hours by chendianhu at 2016.6.2 ## 00 */2 * * * /bin/sh /server/scripts/services_bak.sh >/dev/null 2>&1
(5) 調試crontab:利用date命令調整時間,最好關閉定時任務的時間同步來作測試
[root@lb01 scripts]# date -s "20160827 06:00:00" Sat Aug 27 06:00:00 CST 2016 [root@lb01 scripts]# date +%F-%X 2016-08-27-06:00:01
4.5 定時任務:打包站點目錄
第5題 天天晚上12點,打包站點目錄/var/www/html備份到/data目錄下(最好每次備份按時間生成不一樣的備份包)
思路:
(1) 命令行測試
(2) 編寫腳本
(3) 測試腳本
(4) 編輯crontab
(5) 調試crontab
解答:
(1) 命令行測試
[root@lb01 ~]# mkdir -p /var/www/html [root@lb01 ~]# touch /var/www/html/stu{1..10}.html [root@lb01 ~]# cd /var/www/ [root@lb01 www]# tar zcf /data/html_bak_`date +%F`.tar.gz ./html [root@lb01 www]# ll /data/html_bak_2016-08-27.tar.gz -rw-r--r-- 1 root root 220 2016-08-27 15:26 /data/html_bak_2016-08-27.tar.gz
(2) 編寫腳本
[root@lb01 www]# cd /server/scripts/ [root@lb01 scripts]# vim html_bak.sh #/bin/sh cd /var/www/ && \ /bin/tar zcf /data/html_bak_`/bin/date +%F -d "-1day"`.tar.gz ./html
(3) 測試腳本
[root@lb01 scripts]# /bin/sh html_bak.sh [root@lb01 scripts]# ll /data/ 總用量 4 -rw-r--r-- 1 root root 220 2016-08-27 15:48 html_bak_2016-08-26.tar.gz
(4) 編輯crontab
[root@lb01 scripts]# crontab -e ##tar directory '/var/www/html' to /data at 00 hours every night by chendianhu at 2016.6.2## 00 00 * * * /bin/sh /server/scripts/html_bak.sh >/dev/null 2>&1
(5) 調試crontab
[root@lb01 scripts]# date 2016年 08月 27日 星期六 15:50:08 CST# 當前日期和時間 [root@lb01 scripts]# date -s "20160827 23:59:58" 2016年 08月 27日 星期六 23:59:58 CST# 修改日期和時間 [root@lb01 scripts]# date 2016年 08月 28日 星期日 00:00:00 CST# 到達零點 [root@lb01 scripts]# ll /data/html_bak_2016-08-27.tar.gz # 執行定時任務,打包 -rw-r--r-- 1 root root 220 2016-08-28 00:00 /data/html_bak_2016-08-27.tar.gz
4.6 定時任務:提示信息
第6題 每週6、日上午 9:00 和下午14:00 來老男孩這裏學習(執行程序/server/script/oldboy.sh 代替學習)。
解答:
(1) 命令行測試
[root@lb01 scripts]# echo 'go to oldboytaining learning linux' go to oldboytaining learning linux
(2)編寫腳本
[root@lb01 scripts]# vim /server/scripts/oldboy.sh #/bin/sh echo 'go to oldboytaining learning linux' >>~/message.txt
(3) 測試腳本
[root@lb01 scripts]# /bin/sh /server/scripts/oldboy.sh [root@lb01 scripts]# cat ~/message.txt go to oldboytaining learning linux
(4) 編輯crontab
[root@lb01 scripts]# crontab -e ##print message at every weeken by chendianhu at 2016.6.2## 00 09,14 * * 0,6 /bin/sh /server/scripts/oldboy.sh >/dev/null 2&>1
(5) 調試crontab:調整時間
[root@lb01 scripts]# date -s "20160828 08:59:59" [root@lb01 scripts]# cat ~/message.txt
4.7 目錄或文件的做用
第7題 請描述下列路徑的內容是作什麼的?
/etc/sysctl.conf
/etc/rc.local
/etc/hosts
/etc/fstab
/var/log/secure
解答:
文件或目錄 做用
/etc/sysctl.conf 優化系統內核參數的文件
/etc/rc.local 存放開機自啓動程序命令的文件
/etc/hosts 局域網域名解析文件
/etc/fstab 開機自動掛載文件
/var/log/secure 系統安全日誌文件,依賴於rsyglog服務
4.8 正則表達式
第8題 請說出下列 grep 正則表達式的含義
^
$
.(點號)
\
*
\{n,m\}
[^t]
^[^t]
解答:
符號 含義
^ 以……開頭,好比^w,表明以w開頭
$ 以……結尾,好比w$,表明以w結尾
.(點號) 表明且只能表明任意一個字符
\ 轉義字符,使有着特殊意義的字符,脫掉馬甲,恢復成正常字符
* 重複0個或多個前面的一個字符,好比:grep -n "a*" oldboy.log
\{n,m\} 重複字符n到m次,好比:grep -n "a\{3,4\}" oldboy.log,重複字符「a」3到4次
[^t] 匹配不包含^後面的任意一個字符,即除了字符t,其它的所有匹配(過濾出來)
^[^t] 匹配以(非字符t)開頭的字符
4.9 vi經常使用命令
第9題 根據中文給出命令
(1) 退出並保存
(2) 退出並強制保存
(3) 強制退出,但不保存
(4) 光標移動到文件的最後一行
(5) 光標移動到文件的第一行
(6) 從光標所在位置將光標移動到當前行的開頭
(7) 從光標所在位置將光標移動到當前行的結尾
(8) 取消上一次的動做
(9) 刪除一行
(10) 向下搜索
(11) 向上搜索
解答:
命令 做用
:wq 退出並保存
:wq! 退出並強制保存
:q! 強制退出,但不保存
Shift+g(G) 光標移動到文件的最後一行
gg 光標移動到文件的第一行
Shift+6(^) | home | 0 從光標所在位置將光標移動到當前行的開頭
Shift+4($) | end | Shift+a 從光標所在位置將光標移動到當前行的結尾
u 取消上一次的動做
dd 刪除一行
/char 向下搜索,繼續搜索n,反向搜索N
?char 向上搜索, 繼續搜索n,反向搜索N
擴展:
命令 功能說明
i 命令模式==>編輯模式,在光標位置前插入字符
a 命令模式==>編輯模式,在光標位置後插入字符
o 命令模式==>編輯模式,在當前行下方插入新的一行,並從行首開始
Esc 編輯模式==>命令模式
:set nu 顯示行號
:set nonu 不顯示行號
yy 複製光標當前所在行
3yy 複製光標當前所在行以及下面2行,即複製3行的內容
p 粘貼
10dd 刪除光標當前所在行,以及下面的兩行
4.10 chmod命令修改文件權限
第10題 受權oldboy目錄及其子目錄755的權限,請給出命令。
思路:
利用chmod命令能夠修改文件的權限,加-R參數能夠遞歸修改目錄下的文件和子目錄的文件權限。
解答:
[root@oldboy ~]# chmod -R 755 /oldboy/# -R參數:遞歸 [root@oldboy ~]# ls -ld /oldboy/ /oldboy/a/# 驗證 drwxr-xr-x. 3 root root 4096 May 11 16:46 /oldboy/ drwxr-xr-x. 3 root root 4096 May 11 16:46 /oldboy/a/
總結:
chmod - change file mode bits#修改文件的權限位 -R, --recursive change files and directories recursively
4.11 chown命令修改文件的屬主和屬組
第11題 把oldboy目錄及其子目錄的屬主改成oldboy,組改成root,請給出命令。
思路:
利用chown命令能夠修改文件的屬主和屬組,加-R參數能夠遞歸修改目錄下的文件和子目錄的文件屬主和屬組信息。
解答:
[root@oldboy ~]# chown -R oldboy.root /oldboy/# -R參數:遞歸 [root@oldboy ~]# chown -R oldboy:root /oldboy/# 格式【屬主:屬組 == 屬主.屬組】 [root@oldboy ~]# ls -ld /oldboy/ /oldboy/a/# 驗證 drwxr-xr-x. 3 oldboy root 4096 May 11 16:46 /oldboy/ drwxr-xr-x. 3 oldboy root 4096 May 11 16:46 /oldboy/a/
總結:
chown - change file owner and group # 修改文件的屬主和屬主
4.12 考查umask的做用
第12題 描述下umask的做用,並舉例。
解答:
umask:權限掩碼。做用:配置文件的默認權限。
1. root用戶umask值默認爲:0022
新建一個文件時,文件的權限確定是644(666-022)
新建一個目錄時,目錄的權限確定是755(777-022)
緣由:目錄權限755和文件權限644是一個目錄或普通文件安全的邊界。
[root@oldboy ~]# touch test.txt# 新建文件 [root@oldboy ~]# mkdir test# 新建目錄 [root@oldboy ~]# ls -ld test.txt test drwxr-xr-x. 2 root root 4096 May 11 17:21 test# 目錄默認權限755 -rw-r--r--. 1 root root 0 May 11 17:20 test.txt# 文件默認權限644
2. 普通用戶umask值默認爲:0002
新建一個文件時,文件的權限確定是664(666-002)
新建一個目錄時,目錄的權限確定是775(777-002)
緣由:普通用戶本身建立的文件,屬主和屬組權限固然能夠給大些。
[oldboy@oldboy ~]$ touch test.txt# 新建文件 [oldboy@oldboy ~]$ mkdir test1# 新建目錄 [oldboy@oldboy ~]$ ls -ld test.txt test1 drwxrwxr-x. 2 oldboy oldboy 4096 May 11 17:15 test1# 目錄默認權限775 -rw-rw-r--. 1 oldboy oldboy 0 May 11 17:15 test.txt# 文件默認權限664
總結:
1. umask值是能夠改的,但通常不改。
2. 文件權限的計算方法有奇偶之分,當umask是偶數時,目錄就用777-umask,文件就用666-umask;當umask是奇數時,計算方法以下:
假設umask值爲:045(哪一個數字位是奇數,就要給這個數字位加1處理)
6 6 6 ==>文件的起始權限值
0 4 5 - ==>umask的值
-----------------
6 2 1 ==>因爲umask的最後一位數字是5,因此,在其餘用戶位要再加1
0 0 1 +
-----------------
6 2 2
3. 目錄權限的計算方法無奇偶之分,直接相減便可。
4.13 考查如何添加用戶
第13題 添加一個用戶oldboy,並指定屬於sa組,要求組ID爲801,uid爲808,而且不創建家目錄及禁止其登陸。
思路:
先建立用戶的屬組,再用useradd命令添加用戶。
解答:
[root@oldboy ~]# groupadd -g 801 sa# 先添加sa組,-g指定組ID [root@oldboy ~]# useradd -g sa -u 808 -M -s /sbin/nologin oldboy # -g指定主組,-u指定uid,-M表明不建立家目錄,-s指定用戶的登陸shell # -G指定所屬的附加組,-m表明建立用戶的家目錄 [root@oldboy ~]# tail -1 /etc/passwd# 看是否在用戶配置文件中有了新用戶的記錄 oldboy:x:808:801::/home/oldboy:/sbin/nologin # 能夠看到用戶的家目錄,用戶的shell爲/sbin/nologin [root@oldboy ~]# id oldboy# 看用戶的uid,所屬組(組uid) uid=808(oldboy) gid=801(sa) groups=801(sa) [root@oldboy ~]# ls -ld /home/oldboy# 驗證是否建立家目錄 ls: cannot access /home/oldboy: No such file or directory
總結:
1. 用戶的登陸shell能夠用下面這條命令來查看:
[root@oldboy ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
2. id + 用戶名:能夠看到用戶的uid和所屬(附加)組的gid
3. useradd命令的經常使用參數
useradd - create a new user or update default new user information -c, --comment COMMENT# 描述信息 -d, --home HOME_DIR# 指定用戶的家目錄 -e, --expiredate EXPIRE_DATE(YYYY-MM-DD)# 指定用戶的過時時間 -g, --gid GROUP# 指定用戶的主組 -G, --groups GROUP1[,GROUP2,...[,GROUPN]]# 指定用戶的附加組 -m, --create-home# 強制建立家目錄 -M Do not create the user's home directory# 不建立家目錄 -s, --shell SHELL# 指定用戶的shell -u, --uid UID# 指定用戶的UID
4.14 查看用戶的uid和所屬組
第14題 如何查看用戶的uid及屬於的組信息。
思路:
id命令搞定。
解答:
[root@oldboy ~]# id oldboy uid=808(oldboy) gid=801(sa) groups=801(sa),802(teachers) [root@oldboy ~]# grep oldboy /etc/passwd oldboy:x:808:801::/home/oldboy:/sbin/nologin # uid爲808;所屬主組爲sa,gid爲801;所屬附加組爲teachers,gid爲802。
總結:
id - print real and effective user and group IDs # 打印用戶和組的ID信息