美文网首页
Linux运维工程师面试题(部分)-复习

Linux运维工程师面试题(部分)-复习

作者: Kim9501 | 来源:发表于2019-04-30 09:39 被阅读0次

    Linux运维工程师面试题(部分)-复习


    categories:

    • Linux
    • 运维
      tags:
    • 运维
    • 面试题
      randnum: linux_om

    1. 查看当前目录(包含子目录)下的文件数
      sudo ls -lR | grep "^-" -csudo ls -lR | grep "^-" | wc -l
    • 参数R表示递归子目录
    • "^-"表示以符号-开头,-c计算符合条件的数目
    • 如果计算目录数,把正则表达式修改"^d"
    • grep工具是按行搜索
    1. 查看当前系统每个IP的连接数
      netstat -n | grep "^tcp" | awk '{print $5}' | awk -F : '{print $1}' | sort | uniq -c | sort -rn
      netstat -nt | awk '{print $5}' | awk -F : '{print $1}' | sort | uniq -c | sort -rn
    • netstat使用-t参数可以之间显示与tcp有关的数据,'-n显示地址和端口号',-l处于listen状态,-u表示与udp有关的数据,-p显示pid
    • awk参数中的-F :表示以符号分隔,默认以tab或空格键,按行搜索并把每行分为多个部分
    • sort参数中-r表示反向排序,-n表示以纯数字进行排序,-u表示相同数据仅出现一行
    • uniq参数中-c表示计数
    1. shell中生成32位随机密码
      cat /dev/urandom | head -n1 | md5sum | head -c32 > /tmp/pass
    • head参数中-n后跟数字表示显示几行,如果是负数表示列出总行数-x行前的,-c表示前多少字符
    • 除md5sum运算外,还可以选择sha1sum,sha256sum
    1. ps命令中的Aux与VSZ
    • ps命令可以查看某个时间点的程序运行状况,比较常用的是ps -lps aux,前者表示只列出自己bash相关的程序,后者表示所有bash的程序
      ps aux
    • STAT状态
      • R->Running
      • S->Sleep,可以被唤醒
      • D->不可被唤醒,可能在等待I/O
      • T->Stop背景暂停或除错状态
      • Z->Zombie僵尸状态,已经终止但是无法被移除内存外
    • TTY表示登录者的终端位置,远程登录则使用pts/n,与终端无关的显示为?,tty1-6为本机
    • VSZ程序使用的虚拟内存(Kb)
    • RSS程序使用的固定内存(Kb)
    • %MEM程序占用的实体内存百分比
    1. top与ps的区别
    • top命令是动态观察程序的变化,ps是某个时间点的程序状态


      top
    • load average分别是1min,5min,15min的负载,如果该数除以逻辑cpu的数量大于5表示系统超负荷
    • -d 跟秒数,top更新的秒数,默认为5s
    • -p 指定pid
    • P 按cpu资源排序
    • M 以memeory资源排序
    • N 以pid排序
    • T使用cpu时间累计排序
    • 1数字1可以查看每个逻辑cpu的状况,再按一次返回
    • b高亮显示当前进程
    • m切换显示内存信息
    • q离开top
    • PR表示程序执行的优先顺序,越小越早被执行
    • NInice的缩写,越小越早被执行
    • VIRT进程使用的虚拟内存总量,单位kb,VIRT=swap+res
    • RES进程使用的物理内存
    • SHR共享内存
    1. shell内取1-39的随机整数
      expr ${RANDOM} % 39 + 1
    • expr是一个手工命令行计数器,用于求表达式变量的值,可以进行+ - * / %的运算, 进行乘法运算时需要将符号*转义\*,数字与元算符号之间有空格
    • RANDOM是系统变量,会产生0~32767之间的数值
    1. 显示文件/etc/ssh/sshd_config文件中以#开头,并且后面跟一个或多个空白字符,而后又跟任意非空字符,并显示行号
      grep -n "^# \{1,\}[^ ]" /etc/ssh/sshd_config
    • grep中参数-n用于显示行号
    • ^万用字符表示以某个字符开头,$万用字符表示以某个字符结尾,[^ ]表示非空白字符
    • X\{1,\}表示一个以上X字符,\用于转义符号{},X\{2,5\}表示
    1. 使用shell批量创建用户和默认密码,并保存用户名和密码到文件中
    #!/bin/bash
    # create group if not exist
    grep test /etc/shadow
    [ $? -eq 0 ] || groupadd test
    # create user 
    for i in 'seq -f"%02g" 1 10'
    do
        # create user use command:useradd
        useradd -s /bin/bash -g test user${i} > /dev/null 2>&1
        user_passwd="`echo ${RANDOM}|md5sum|head -c8`"
        # change passwd use command:passwd --stdin
        echo "${user_passwd}"|passwd --stdin user${i} > /dev/null 2>&1
        # save user_name and user_passwd
        echo "user${i} :${user_passwd}" >> /home/kim/user_passwd.txt
        
    
    • echo 在输出变量还有其他字符时,需要使用双引号"",如果输出的内容需要调用其他命令还需要使用字符````
    • seq格式化%02g保留2位,不足位用0补充
    • 使用判断符号[]要注意左右的空格
    • 标准输出和标准错误输出2>&1
    • 垃圾桶/dev/null
    1. 查找/var/log目录下后缀格式为log,大小超过1M的文件数目
      find /var/log -name "*.log" -type -f -size +1024k | wc -l
    2. 查找/tmp目录下10天内未修改的文件,并删除
      find /tmp !-mtime -10 -exec rm -fr {} \;
    3. 查找当前目录下的空文件夹/文件并删除
      find ./ -type d -empty -exec rm -fr {} \;
      find ./ -type f -size 0c -exec rm -fr {} \;
    4. 显示磁盘使用率超过50%的分区
      df -h |awk '+$5>50'
    • 使用一元加运算+$5表示第五列乘以+1(正1),一元减表示乘以负1
    1. 打包本目录下的所有文件为web.tar.gz,排除文件夹log和文件test
      tar -czvf web.tar.gz ./* --exclude=./log/ --exclude=./test
    2. umask022代表的意思
      umask代表创建文件或目录的默认权限,计算方式为777分别减去umask的值 ,umask022代表创建文件或目录的默认权限为755,即u为rwx,g为rx,o为rx
    3. 查看某个进程/用户打开的文件
    # 1个或多个进程打开的文件
    ## 根据进程名
    lsof -c process
    lsof | grep process
    lsof -c process1 -c process2 
    ## 根据进程号
    lsof -p pid,pid1,pid2
    # 用户打开的文件
    lsof -u user
    # 除用户user外打开的文件
    lsof -u ^user
    # 查看正在使用文件
    lsof /path/filename
    # 查看网络信息
    ## tcp
    lsof -i tcp
    ## udp
    lsof -i udp
    ## 端口号
    lsof -i:1080
    ## 使用端口号的tcp
    lsof -i tcp:1080
    ## 用户的所有活跃的网络端口
    lsof -a -u user -i 
    
    1. 常用服务的端口号
    • http/https:80
    • ftp:21
    • ssh:22
    • sftp:22
    • smtp:25/465/993
    • pop3:110/995
    • imap:143/993

    相关文章

      网友评论

          本文标题:Linux运维工程师面试题(部分)-复习

          本文链接:https://www.haomeiwen.com/subject/myhmnqtx.html