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

    1. 如何过滤出已知当前目录下oldboy中的所有一级目录?

    提示:不包含oldboy目录下面目录的子目录和隐藏目录,只要一级目录即可。

    解答:

    • ls -F|grep /   通过ls -F给目录后面加标识,过滤
      • 除了 ls -F加标识外,还可以用 ls -p
    • ls -l|grep '^d'  通过过滤长属性的文件和目录属性标识
    •  ls -l|awk '$2!~/1/{print}'   通过判断长属性的第二列(即:硬连接数)不等于1(即大于1)的是目录
      • 不绝对,当文件没有硬连接的时候是对的
    • find . -type d -maxdepth 1  查找目录
    • tree -L 1 -d 只取一级子目录

    2. 假如当前目录是/oldboy,现在需要进入到/tmp目录下进行操作,执行的命令为: cd /tmp。操作完毕后,想要快速回到上一次进入的目录,应该如何做?(不能使用 cd /oldboy)

    解答:

    方法1: “-”表示上一次所在的目录,切换回即可

    cd -

    原理:环境变量中的OLDPWD会记录上一次的目录。env|grep -i oldpwd

    方法2:查看history历史记录命令,找到对应的切换路径的命令,用 !history_command_number,会执行该命令。

    [root@oldboy tmp]# history
       19  cd /oldboy
       20  pwd
       21  cd /tmp
       22  pwd
       23  history
    [root@oldboy tmp]# !19
    cd /oldboy

    3. 一个目录中有很多文件,向快速看到最近最新的文件。如何看?

    解答:

    文件按照时间顺序排序,倒序正序都可以。

    ls -lrt

    执行这个命令后,最新的文件会在最下面。

    以长格式安装修改时间倒序排序文件和目录,这样最近创建或修改的文件或目录就在窗口最下面了。

    4. 在配置apache时,执行了./configure --prefix=/application/apache2.2.17来编译apache,在make install 完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17目录做一个软连接/application/apache2.2.17下的内容,请给出实现的命令。

    解答:

    ln -s /application/apache2.2.17 /application/apache

    5. 已知apache服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志。 

    解答:

    find /app/logs -type f -name "*.log" -mtime +7 -exec rm -f {} ;

    6. 调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做

    解答:

    • tail -f /var/log/messages 
    • taif /var/log/messages
    • tail -F /var/log/messages  

    注意这三者的区别:

    • tail -f      等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
    • tail -F     等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
    • tailf        等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电。

    7. 打印配置文件nginx.conf内容的行号及内容,该如何做?

    解答:

    • cat -n nginx.conf 
    • nl nginx.conf  nl命令即,number of lines
    • grep -n . nginx.conf (点.表示匹配任意字符,即输出所有内容)
    • vi nginx.conf 命令行模式下 :set nu 查看行号, :set nonu取消行号
    • awk '{print NR,$0}' nginx.conf
    • less -N nginx.conf
    • sed = nginx.conf|sed 'N;s/ / /g'
    • sed = nginx.conf|xargs -n2
      • 注意,sed = 的用法,比较少见
    [root@oldboy oldboy]# sed = oldboy.txt 
    1
    inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0

    注意,sed = 的“=”前后有空格,否则不会显示出行号和内容。

    8. 装完系统后,希望让网络文件共享服务NFS,仅在 3 级别上开机自启动,该如何做?

    解答:

    方法1:把要启动的服务放在/etc/rc.local里。

    ### [root@oldboy ~]# vi /etc/rc.local
    
    在文件中添加内容:
    # sshd service startup scripts
    /etc/init.d/sshd start 

      

    方法2:chkconfig --list,查看所有运行的服务以及对应的运行级别。

    chkconfig --list nfs

    chkconfig nfs off # 全部关闭服务

    chkconfig --level 3 nfs on  # 在3运行级别上设置开机自启动

    9. Linux系统运行级别一般为0-6,请写出每个级别的含义。

    • 0 关机
    • 1 单用户命令行模式
    • 2 无网络的多用户
    • 3 正常的文本模式下的多用户
    • 4 unused
    • 5 桌面系统模式
    • 6 重启
    [root@oldboy etc]# tail /etc/inittab    
    # Default runlevel. The runlevels used are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    # 
    id:3:initdefault:

    10. Linux系统中查看中文乱码,请问如何解决乱码问题?

    解答:

    LANG 这个 环境变量 就是控制字符显示的。

    • 临时修改LANG  export LANG='zh_CN.UTF-8'
    • 修改/etc/sysconfig/i18n这个配置文件,永久生效。
    [root@oldboy oldboy]# echo 'LANG="zh_CN.UTF-8"'>/etc/sysconfig/i18n  
    [root@oldboy oldboy]# source /etc/sysconfig/i18n  # 如需让配置立即生效需要执行此步。
    [root@oldboy oldboy]# echo $LANG
    zh_CN.UTF-8

    11. 如何优化Linux系统?

    1. 不用root,添加普通用户,通过sudo授权管理
    2. 更改默认的远程连接SSH服务器端口及禁止root用户远程连接
    3. 定时自动更新服务器时间
    4. 配置yum更新源,从国内更新源下载安装rpm包
    5. 关闭selinux及iptables(iptables工作场景如果有 wan ip 一般要打开,高并发除外)
    6. 调整文件描述符的数量,进程及文件的打开都会消耗文件描述符
    7. 定时自动清理/var/spool/clientmqueue/目录垃圾文件,防止 inodes 节点被占满(c6.4默认没有sendmail,因此,可以不配)
    8. 精简开机自启动服务(crond,sshd,network,rsyslog(c5.8 syslog))
    9. Linux内核参数优化/etc/sysctl.conf,执行sysctl -p生效
    10. 更改字符集,支持中文,但还是建议用英文字符集,防止乱码问题,不要使用中文
    11. 锁定关键系统文件 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 处理以上内容后,把chattr, lsattr改名为oldboy,这样就安全多了
    12. 清空/etc/issue,去除系统及内核版本登录前的屏幕显示
    13. 清空无用的默认系统账户或组(非必须)。

    12. 如何查看/etc/services文件有多少行?

    解答:

    • wc -l /etc/services
    • cat -n /etc/services|tail -1

    13. /etc/目录为Linux系统的默认配置文件及服务启动命令的目录

    • 请用tar打包/etc/整个目录(打包及压缩)
    • 请用tar打包/etc/整个目录(打包及压缩,但需要排除/etc/services文件)
    • 请把第一个打包好的文件,解压到/tmp的指定目录下

    解答:

    • 请用tar打包/etc/整个目录(打包及压缩)
      • tar zcf /tmp/etc.tar.gz /etc/
    • 请用tar打包/etc/整个目录(打包及压缩,但需要排除/etc/services文件)
      • tar zcf /tmp/etc.tar.gz /etc/ --exclude=/etc/services
    • 请把第一个打包好的文件,解压到/tmp的指定目录下
      • tar zxf /tmp/etc.tar.gz /tmp/etc/

    14. 现有文件内容如下,需要从文件中过滤出“oldboy”和“1234567890”的字符串。

    [root@oldboy oldboy]# cat oldboy.txt
    I am oldboy, mysqq is 1234567890

    解答:

    主要是活用awk,grep,sed,cut等多种文本处理

    [root@oldboy oldboy]# cat oldboy.txt|cut -d" " -f 6,3|sed 's#,##g'
    oldboy 1234567890
    
    [root@oldboy oldboy]# grep -oE '(oldboy)|[0-9]+' oldboy.txt 
    oldboy
    1234567890
    
    [root@oldboy oldboy]# egrep -o '(oldboy)|[0-9]+' oldboy.txt 
    oldboy
    1234567890
    
    [root@oldboy oldboy]# awk -F "[ ,]+" '{print $3,$NF}' oldboy.txt  
    oldboy 1234567890
    
    [root@oldboy oldboy]# sed -nr 's#^.*(oldboy).*([0-9]{10,})$#1 2#gp' oldboy.txt  
    oldboy 1234567890

    15. 过滤出/etc/services 文件包含3306或1521两数据库端口的行的内容。

    解答:

    [root@oldboy oldboy]# cat /etc/services|grep -E '3306|1521'
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ncube-lm        1521/tcp                # nCube License Manager
    ncube-lm        1521/udp                # nCube License Manager
    
    [root@oldboy oldboy]# egrep '3306|1521' /etc/services
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ncube-lm        1521/tcp                # nCube License Manager
    ncube-lm        1521/udp                # nCube License Manager
    
    [root@oldboy oldboy]# awk '/3306|1521/{print }' /etc/services         
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ncube-lm        1521/tcp                # nCube License Manager
    ncube-lm        1521/udp                # nCube License Manager
    
    [root@oldboy oldboy]# sed -nr '/3306|1521/p' /etc/services
    mysql           3306/tcp                        # MySQL
    mysql           3306/udp                        # MySQL
    ncube-lm        1521/tcp                # nCube License Manager
    ncube-lm        1521/udp                # nCube License Manager
  • 相关阅读:
    java多线程学习-java.util.concurrent详解(四) Exchanger
    java多线程学习-java.util.concurrent详解(三) Semaphore
    java多线程学习-java.util.concurrent详解(二) CyclicBarrier
    java多线程学习-java.util.concurrent详解(一) CountDownLatch
    MongoDB 入门学习
    Protrator自动化测试(针对Angular 应用的自动化测试)
    Jasmine 编写 JavaScript 测试用例
    记录一下mysql忘记密码重置
    System.Data.DbType的字符串和数据库中字符串类型对应关系
    memcached和mongodb 在windows下安装
  • 原文地址:https://www.cnblogs.com/zoe233/p/11954030.html
Copyright © 2011-2022 走看看