• PYTHON运维开发面试题整理


    1、请使用Linux系统命令统计出establish状态链接数有多少?

    netstat -an |grep ESTABLISHED |wc -l

     

    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态

    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。

    提示:LISTENLISTENING的状态只有用-a或者-l才能看到

     

    2、查询file1里面空行所在行号?

    grep -n "^$" file1

     

    3、查询file1abc结尾的行?

    grep "abc$" file1

     

    4、Crontab11月份内,每天的早上6点到12点中,每隔2小时执行一次/use/bin/httpd.sh

    怎么实现?

    0 6-12/2 * 11 * /usr/bin/httpd.sh

    5、写一个脚本查找最后创建时间是3天前,后缀是*log的文件并删除。

    #/bin/bash    

    # filename: del_log.sh

     

    find / -name "*.log" -mtime 3 | xargs rm -rf

    #/bin/bash

    # filename: del_log.sh

     

    find / -name "*.log" -mtime 3 -exec rm -rf {} ;

    #/bin/bash

    # filename: del_log.sh

     

    find / -name "*.log" -mtime 3 -ok rm -rf {} ;

     

     

     

     

    6、shell/usr/local下建立20个子目录xunlei1-xunlei20,再在这个子目录下分别建255个子目录dir1-dir255,再在255个子目录下创建10000个文件xunlei1.html-xunlei10000.html

     

    mkdir -p /usr/loca/xunlie{1..20}/dir{1..255}/

        touch   /usr/loca/xunlie{1..20}/dir{1..255}/xunlei{1..10000}.html  

     

     

    7、通过Nginx访问日志access.log统计IP和每个地址访问的次数,按访问量列出前10名,

    日格式样例如下  192.168.1.247  -  -[02/Jul/2010:23:44:59 +0800] -GET /HTTP/1.1” 200 19

    cat access_log | awk ‘{print $1}’ | uniq -c|sort -rn|head -10

    企业案例
    处理一下文件内容,将域名取出并根据域名进行计数排序处理(百度和sohu面试题)

    1

    2

    3

    4

    5

    6

    7

    [root@web01 ~]# cat access.log 

    http://www.etiantian.org/index.html

    http://www.etiantian.org/1.html

    http://post.etiantian.org/index.html 

    http://mp3.etiantian.org/index.html

    http://www.etiantian.org/3.html

    http://post.etiantian.org/2.html

    解答:
    分析:此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等等。

    1

    2

    3

    4

    [root@web01 ~]# awk -F '[/]+' '{print $2}' access.log|sort|uniq -c|sort -rn -k1

          3 www.etiantian.org

          2 post.etiantian.org

          1 mp3.etiantian.org

    sort(选项)(参数)

    选项

    -b:忽略每行前始出的空格字符;

    -c:检查文件是否已经按照顺序排序;

    -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;

    -f:排序时,将小写字母视为大写字母;

    -i:排序时,除了040176之间的ASCII字符外,忽略其他的字符;

    -m:将几个排序号的文件进行合并;

    -M:将前面3个字母依照月份的缩写进行排序;

    -n:依照数值的大小排序;

    -o<输出文件>:将排序后的结果存入制定的文件;

    -r:以相反的顺序来排序;

    -t<分隔字符>:指定排序时所用的栏位分隔字符;

    +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

     

    8、杀死以A开头的所有进程。

    https://zhidao.baidu.com/question/39629953.html

    ps -ef |grep A|grep -v grep|cut -c 9-15 |xargs kill-9

    Linux平台上后台运行4vim进程,使用如下命令即可同时结束掉4vim进程

    ps -efww|grep vim |grep -v grep|cut -c 9-15|xargs kill -9

     

    说明:管道符|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。 

      ps -efww”是查看所有进程的命令。这时检索出的进程将作为下一条命令“grep“的输入,注意要结束其它程序时,请将上面命令中的vim替换成其它程序名。

      grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

      cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID

      xargs kill -9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该命令。

          kill -9”会强行杀掉指定进程,这样就成功清除了同名进程。

     

    9、如何查看占用端口8080的进程。

    方法1 使用lsof命令

    lsoflist open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
      使用IPv4协议的局域网:
      执行命令:  lsof -Pnl +M -i4|grep 8080
      输出结果:  java       1419     1401   10u  IPv4 6793357       TCP *:8080 (LISTEN)

    方法2 先使用 netstat命令,再用 ps命令
       执行命令: netstat -anp|grep 8080
       输出结果: tcp        0      0 :::8080              :::*          LISTEN      12006/java
       执行命令: ps -ef | grep 12006
       输出结果: root     12886 12851  0 Dec09 ?        00:01:14 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m......

     

     

     

    10、服务器免密登录如何实现?

    https://blog.csdn.net/simongeek/article/details/53501629

     

     

    11、Shell$#,$$,$?,$0分别代表什么?

    https://blog.csdn.net/slovyz/article/details/47400107

    $$
    Shell本身的PIDProcessID
    $!
    Shell最后运行的后台ProcessPID
    $?
    最后运行的命令的结束代码(返回值)
    $-
    使用Set命令设定的Flag一览
    $*
    所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 $n"的形式输出所有参数。
    $@
    所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" "$n" 的形式输出所有参数。
    $#
    添加到Shell的参数个数
    $0
    Shell本身的文件名
    $1$n
    添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

     

    12、Nginx算法

    https://blog.csdn.net/gzh0222/article/details/8095994

     

    13、编写一个Nginxaccess模块,要求准许192.168.3.29/24的机器访问,准许10.1.20.6/16这个网段的所有机器访问,准许34.26.157.0/24这个网段访问,除此之外的机器不准许访问。

    location/{

    access 192.168.3.29/24;

    access 10.1.20.6/16;

    access 34.26.157.0/24;

    deny all;

    }

     

    http://www.it610.com/article/4921101.htm

     

    14、Nginx优化方面有哪些?

     

     

    15、请写出一段Python代码实现删除一个list里面的重复元素

    https://blog.csdn.net/melody_1314/article/details/7298448

     

    #/usr/bin/python

    #coding=utf-8

    List1=[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7]
    List1=list(set(List1))
    print(List1)

     

    熟悉前端框架Django,FlaskjQueryBootstrapVue等:熟悉运维工具SaltStackPuppet

     

     

     

  • 相关阅读:
    数字音频技术:混音器
    android studio: 为现有项目添加C++支持
    android: requestLayout(), invalidate(), postInvalidate() 方法区别
    android: Canvas的drawArc()方法的几个误区
    MediaPlayer: MediaPlayer中的prepare方法和prepareAsync方法的区别
    MediaPlayer: 在不同控件之间实现视频的无缝切换的方法
    android studio: 让项目通过阿里云 maven jcenter 下载依赖资源
    android: ListView设置emptyView 误区
    Javascript继承
    TortoiseSVN 只取下或更新部分文件的方法(Sparse Update/Sparse Checkout)
  • 原文地址:https://www.cnblogs.com/huangtiandi001/p/9197270.html
Copyright © 2020-2023  润新知