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命令。

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

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

grep -n "^$" file1

3、查询file1以abc结尾的行?

grep "abc$" file1

4、Crontab在11月份内,每天的早上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


[[email protected] ~]# 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


[[email protected] ~]# 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:排序时,除了040至176之间的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平台上后台运行4个vim进程,使用如下命令即可同时结束掉4个vim进程

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命令

lsof(list 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本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
[email protected]
所有参数列表。如"[email protected]"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

12、Nginx算法

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

13、编写一个Nginx的access模块,要求准许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,Flask,jQuery,Bootstrap或Vue等:熟悉运维工具SaltStack、Puppet等

原文地址:https://www.cnblogs.com/huangtiandi001/p/9197270.html

时间: 2024-08-28 16:02:53

PYTHON运维开发面试题整理的相关文章

前端开发面试题整理(JS篇)

以下都是网上整理出来的JS面试题,答案仅供参考. /2,截取字符串abcdefg的efg //alert('abcdefg'.substring(4)); //3,判断一个字符串中出现次数最多的字符,统计这个次数 /*var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) {         if(!json[str.charAt(i)]){                 json[

python运维开发之路02

年底事多,在公司忙成狗,难得把博客更新了下 本章主要内容是collections模块的介绍(队列,计数器,默认字典,有序字典,可命名元组,以及简单介绍深浅拷贝!) collections模块 collection counter 计数器: counter 是继承字典这个父类的功能,所以很多方法都是从字典那里得来的.它的功能就是计算每个元素出现的次数 >>> import collections >>>ret=collections.Counter("asdfk

Java开发面试题整理(2019春招)

一.Java基础部分 1. HashMap和Hashtable各有什么特点,它们有什么区别?(必背题,超级重要) HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronization),以及速度. HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不

iOS开发面试题整理

1.类别的作用?继承和类别在实现中有何区别? category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改.并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级. 类别主要有3个作用: (1)将类的实现分散到多个不同文件或多个不同框架中. (2)创建对私有方法的前向引用. (3)向对象添加非正式协议. 继承可以增加,修改或者删除方法,并且可以增加属性. 2.KVO 和 KVC的区别? 答案:kvc:键 - 值编码是一种间接

Python开发面试题:面试中 8 个必考问题

‘金三银四’ 工作的人没有不知道的吧,其实7月也是跳槽面试的高峰期,咱们的学生大军也加入了找工作的浪潮.这里根据经验和实际情况总结了一下在Python面试中,关于Python开发面试题必考的8个问题,有需要的小伙伴,敲黑板认真看哦! 1.下面这段代码的输出结果是什么?请解释. def extendList(val, list=[]): list.append(val) return listlist1 = extendList(10)list2 = extendList(123,[])list3

Web开发面试题

标签:Web开发面试题 HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所访问.内容能被更广泛的设备所访问.更少的代码和组件,容易维 护.改版方便,不需要变动页面内容.提供打印版本而不需要复制内容.提高网站易用性: 2.xhtml和html有什么区别HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同:XHTML

大公司移动前端开发面试题——做转盘[参考代码]

题目在此 http://www.cnblogs.com/arfeizhang/p/turntable.html 这几天一直在忙,终于找到时间把参考代码放出来了.大家参考一下. 参考代码考虑到让入行不久的前端也看得懂,没有进行封装.变量名也没有进行简写,尽量一看就明白. 图片随手在网上截的,也许没有对准圆心.这段代码只考虑了webkit内核的浏览器,没做兼容.重在让大家弄懂原理. :P 如果感到有些卡帧,可能是转盘图片带来的效果.在调试器上试过,能维持50-60帧,流畅度还是让人满意的.在LG G

Python 运维常用模块

基础库:sys.os(os.path.os.stat).time.logging.prarmiko.re.random Python运维常用的20个库 1.psutil是一个跨平台库(https://github.com/giampaolo/psutil)能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及进程的管理. 2.IPy(http://github.com/haypo/python-ipy),辅助IP规划. 3.dnspython(h

Python运维编程

Python运维编程 作者:Danbo  2015-10-11 什么是Python,为什么要使用Python? 这个大家自行谷歌,不过看看知乎你就知道Python有多么强大:http://www.zhihu.com/question/25038841  #大蟒蛇是人形自走跑有木有啊! 首先你要知道Python很强大.Python是一个胶水语言(Glue Language).与Perl最大的不同是Python开发的哲学是:用一种方法,最好是只有一种方法来做一件事,而Perl是:总是有多种方法来做同