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。
     
  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/zoe233/p/11957750.html
Copyright © 2011-2022 走看看