zoukankan      html  css  js  c++  java
  • 【Linux题目】第六关

    【定时任务规则】

    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:权限掩码。 

    作用: 配置文件的默认权限。

    例如:

    1. root用户的umask值默认为0022 

    新建一个文件的默认权限就是644;
    新建一个目录的默认权限就是755

    原因:目录权限755和文件权限644是一个目录或普通文件安全的边界。

    1. 普通用户umask值默认为:0002(uid大于199并且uid和gid相同)

    新建一个文件时,文件的权限肯定是664(666-002);
    新建一个目录时,目录的权限肯定是775(777-002)

    原因:普通用户自己创建的文件,属主和属组权限当然可以给大些。

     

    总结:

    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

    1. 目录权限的计算方法无奇偶之分,直接相减即可。
     

    【用户和组】

    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及属于的组信息。

    解答: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。
     
  • 相关阅读:
    窗体吸附 Timer + 判断Location (简单实用)
    C# FTP 应用程序
    C# 加密方法汇总
    LINQ 标准的查询操作符 合计操作符 Count()、Sum()、Min()、Max()、Average()和Aggregate()
    委托中的协变和逆变(C# 编程指南)
    深入探讨C#序列化和反序列化
    grep 命令详解
    Oracle 数据库的启动和关闭的方式!
    linux 下的光盘拷贝
    C3P0连接池配置
  • 原文地址:https://www.cnblogs.com/zoe233/p/11957750.html
Copyright © 2011-2022 走看看