第4章 第4周课前测试考试题
4.1 定时任务规则的含义01
第1题如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( ) 30 4 * * 3 mycmd
A.每小时。B.每周。C.每年三月中每小时一次。
解答:每周三的4点30分,执行mycmd。
4.2 定时任务规则的含义02
第2题如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( )*/5 * * * * mycmd
A.每5分钟一次。B.每小时过5分钟。C.不会运行,格式无效。
解答:每隔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.gz128K /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/shcd /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-%X2016-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/shcd /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]# date2016年 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]# date2016年 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题每周六、日上午 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/shecho '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 testdrwxr-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 test1drwxrwxr-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处理)
666==>文件的起始权限值
045 - ==>umask的值
-----------------
621 ==>由于umask的最后一位数字是5,所以,在其他用户位要再加1
001 +
-----------------
622
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 oldboyuid=808(oldboy) gid=801(sa) groups=801(sa),802(teachers)[root@oldboy ~]# grep oldboy /etc/passwdoldboy: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信息
本文出自 “陈发哥007” 博客,请务必保留此出处http://chenfage.blog.51cto.com/8804946/1843352