【定时任务规则】
1. 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( ) 30 4 * * 3 mycmd
A. 每小时。 B. 每周。 C. 每年三月中每小时一次。
解答:
每周三的4点30分,执行mycmd。B
2. 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( )*/5 * * * * mycmd
A. 每5分钟一次。 B. 每小时过5分钟。 C. 不会运行,格式无效。
解答:
每隔5分钟,执行mycmd。
3. 每隔1分钟,打印一个+号到oldboy.log,请给出crontab完整命令。
解答:
echo 'echo "+">>oldboy.log' > oldboy_log.sh
crontab -e
*/1 * * * * /bin/sh oldboy_log.sh >/dev/null 2>&1
4. 每隔2个小时将/etc/services文件打包备份到/tmp下(最好每次备份成不同的备份包)。
解答:
# 命令行测试: [root@oldboy etc]# cd /etc [root@oldboy etc]# tar zcf /tmp/services_bak_`date +%F-%H`.tar.gz ./services # 检查tar命令执行结果: [root@oldboy etc]# ll /tmp/services_bak_2019-09-13-13.tar.gz -rw-r--r-- 1 root root 127304 Sep 13 13:08 /tmp/services_bak_2019-09-13-13.tar.gz # 编写脚本: [root@oldboy /]# mkdir /server/scripts -p [root@oldboy /]# cat /server/scripts/services_bak.sh #/bin/sh cd /etc /bin/tar zcf /tmp/services_bak_`date +%F-%H`.tar.gz ./services # 测试脚本: [root@oldboy /]# /bin/sh /server/scripts/services_bak.sh [root@oldboy /]# ll /tmp/services_bak_2019-09-13-13.tar.gz -rw-r--r-- 1 root root 127304 Sep 13 13:14 /tmp/services_bak_2019-09-13-13.tar.gz # 编辑crontab: [root@lb01 scripts]# crontab -e ## tar file '/etc/services' to /tmp every 2 hours by zoe at 20190913 00 */2 * * * /bin/sh /server/scripts/services_bak.sh >/dev/null 2>&1 # 调试contab:利用date命令调整时间,最好关闭定时任务的时间同步来做测试 [root@oldboy tmp]# date -s '20180101 00:00' [root@oldboy tmp]# ll /tmp/services_bak_2018-01-01-00.tar.gz -rw-r--r-- 1 root root 127304 Jan 1 2018 /tmp/services_bak_2018-01-01-00.tar.gz
5. 每天晚上12点,打包站点目录/var/www/html备份到/data目录下(最好每次备份按时间生成不同的备份包)
解答:
# (1) 命令行测试 [root@oldboy /]# cd /var/www/ [root@oldboy www]# tar zcvf /data/var_www_html_bak_`date +%F`.tar.gz ./html ./html/ ./html/index.html [root@oldboy www]# ll /data/var_www_html_bak_2019-09-13.tar.gz -rw-r--r-- 1 root root 160 Sep 13 13:37 /data/var_www_html_bak_2019-09-13.tar.gz # (2) 编写脚本 [root@oldboy scripts]# cat /server/scripts/html_bak.sh #/bin/sh cd /var/www /bin/tar zcvf /data/var_www_html_bak_`date +%F`.tar.gz ./html # (3) 测试脚本 [root@oldboy scripts]# /bin/sh html_bak.sh ./html/ ./html/index.html [root@oldboy scripts]# ll /data/var_www_html_bak_2019-09-13.tar.gz -rw-r--r-- 1 root root 160 Sep 13 13:43 /data/var_www_html_bak_2019-09-13.tar.gz # (4) 编辑crontab [root@lb01 scripts]# crontab -e ##tar directory '/var/www/html' to /data at 00 hours every night by zoe at 2019.09.13## 00 00 * * * /bin/sh /server/scripts/html_bak.sh >/dev/null 2>&1 # (5) 调试crontab 通过调整日期的方式调试
6. 每周六、日上午 9:00 和下午14:00 来老男孩这里学习(执行程序/server/script/oldboy.sh 代替学习)。
解答:
# 1. 命令行测试 [root@oldboy scripts]# echo 'go to oldboy, learning linux.' go to oldboy, learning linux. # 2. 编写脚本 [root@lb01 scripts]# vim /server/scripts/oldboy.sh #/bin/sh echo 'go to oldboytaining learning linux' >>~/message.txt # 3. 脚本测试 [root@oldboy scripts]# /bin/sh /server/scripts/oldboy.sh [root@oldboy scripts]# cat ~/message.txt go to oldboy, learning Linux. # 4. 编写crontab [root@lb01 scripts]# crontab -e ##print message at every weeken by zoe at 20190913## 00 09,14 * * 0,6 /bin/sh /server/scripts/oldboy.sh >/dev/null 2&>1 # 5. 测试crontab [root@oldboy scripts]# date -s '20190914 14:00' Sat Sep 14 14:00:00 CST 2019 [root@oldboy scripts]# cat ~/message.txt go to oldboy, learning Linux.
【目录或文件的作用】
7. 请描述下列路径的内容是做什么的?
解答:
- /etc/sysctl.conf 优化系统内核参数的文件
- /etc/rc.local 存放开机自启动程序命令的文件
- /etc/hosts 局域网域名解析文件
- /etc/fstab 开机自动挂载文件
- /var/log/secure 系统安全日志文件,依赖于rsyslog服务
【正则表达式】
8. 请说出下列 grep 正则表达式的含义
解答:
- ^ 以...开头
- $ 以... 结尾
- .(点号) 代表单个任意字符
- 转义字符
- * 重复0个或多个前面的一个字符
- {n,m} 重复字符n到m次
- [^t] 匹配不包含^后面的任意一个字符,即除了字符t,其他的全部匹配
- ^[^t] 匹配以(非字符t)开头的字符
【vi常用命令】
9. 根据中文给出命令
(1) 退出并保存
(2) 退出并强制保存
(3) 强制退出,但不保存
(4) 光标移动到文件的最后一行
(5) 光标移动到文件的第一行
(6) 从光标所在位置将光标移动到当前行的开头
(7) 从光标所在位置将光标移动到当前行的结尾
(8) 取消上一次的动作
(9) 删除一行
(10) 向下搜索
(11) 向上搜索
解答:
(1) 退出并保存 :wq
(2) 退出并强制保存 :wq!
(3) 强制退出,但不保存 :q!
(4) 光标移动到文件的最后一行 shift+g| :$ | ]]
(5) 光标移动到文件的第一行 gg | 1G | :0 | [[
(6) 从光标所在位置将光标移动到当前行的开头 shift+6(^)| home | 0
(7) 从光标所在位置将光标移动到当前行的结尾 shift+4($)| end | shift+a(同时进入编辑模式)
(8) 取消上一次的动作 u
(9) 删除一行 dd
(10) 向下搜索 /char 向下搜索n,反向搜索N
(11) 向上搜索 ?char 向下搜索n,反向搜索N
扩展:
命令 功能说明
i 命令模式==>编辑模式,在光标位置前插入字符
a 命令模式==>编辑模式,在光标位置后插入字符
o 命令模式==>编辑模式,在当前行下方插入新的一行,并从行首
开始
Esc 编辑模式==>命令模式
:set nu 显示行号
:set nonu 不显示行号
yy 复制光标当前所在行
3yy 复制光标当前所在行以及下面2行,即复制3行的内容
p 粘贴
3dd 删除光标当前所在行,以及下面的2行,即删除3行的内容
【修改文件权限】
10. 授权oldboy目录及其子目录755的权限,请给出命令。
解答:
chmod -R 755 /oldboy
11. 把oldboy目录及其子目录的属主改为oldboy,组改为root,请给出命令。
解答:
chown -R oldboy:root /oldboy
【umask】
12. 描述下umask的作用,并举例。
解答:
umask:权限掩码。
作用: 配置文件的默认权限。
例如:
- root用户的umask值默认为0022
新建一个文件的默认权限就是644;
新建一个目录的默认权限就是755
原因:目录权限755和文件权限644是一个目录或普通文件安全的边界。
- 普通用户umask值默认为:0002(uid大于199并且uid和gid相同)
新建一个文件时,文件的权限肯定是664(666-002);
新建一个目录时,目录的权限肯定是775(777-002)
原因:普通用户自己创建的文件,属主和属组权限当然可以给大些。
总结:
-
umask值是可以改的,但一般不改。
-
文件权限的计算方法有奇偶之分,当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
- 目录权限的计算方法无奇偶之分,直接相减即可。
【用户和组】
13. 添加一个用户oldboy,并指定属于sa组,要求组ID为801,uid为808,并且不建立家目录及禁止其登录。
解答:
groupadd -g 801 sa
useradd -g sa -u 808 -M -s /sbin/nologin oldboy
[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
14. 如何查看用户的uid及属于的组信息。
[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。