linux考试题
1.在登陆Linux时,一个具备惟一进程ID号的shell将被调用,这个ID是什么()B: pid是1
A.NID B.PID C.UID C.CIDhtml
2.下面那个文件夹存放用户密码信息()B /etc/passwd /etc/shadow ?
A./boot B./etc C./var D./dev前端
/etc/passwdvue
/etc/shadowjava
3.用于自动补全功能时,输入命令或文件的前1个或后几个字母按什么键()B
A.ctrl B.tab C.alt D.escnode
4.vim退出不保存的命令是()D
A.:q B.q C.:wq D.:q!python
5.文件权限读、写、执行三种符号的标志依次是() 421
A.rwx B.xrw C.rdx D.rwsmysql
6.某文件的组外成员的权限是只读、属主是所有权限、组内权限是可读可写、该文件权限为()D
A.467 B.674 C.476 D.764linux
7.改变文件的属主的命令是() C ?
A.chmod B.touch C.chown D.catios
chmod change modenginx
chown change owner
chgrp change group
8.解压缩文件mydjango.tar.gz,咱们能够用() AD
A.tar -zxvf mydjango.tar.gz
B.tar -xvz mydjango.tar.gz
C.tar -czf mydjango.tar.gz
D.tar - xvf mydjango.tar.gz
9.检查linux是否安装了nginx,可用哪些命令()B ???
A.rpm -ivh nginx
B.rpm -q nginx
C.rpm -U nginx
D.rpm -x nginx
10.Linux配置文件通常放在什么目录() A
A.etc B.bin C.lib D.dev
11.linux中查看内存,交换内存的状况命令是() AC
A.top B.last c.free D.lastcomm
12.观察系统动态进程的命令是(b)
A.free B.top C.lastcomm D.df
13.若是执行命令,chmod 746 file.txt ,那么该文件的权限是()A
A.rwxr—rw-
B.rw-r—r—
C.—xr—rwx
D.rwxr—r—
r 4 100
w 2 010
x 1 001
14.找出当前目录以及其子目录全部扩展名为”.txt”的文件,那么命令是() D
A.ls .txt
B.find /opt -name “.txt”
C.ls -d .txt
d.find -name “*.txt”
15.什么命令经常使用于检测网络主机是否可达? C ICMP
A.ssh B.netstat C.ping D.exit
16.退出交互式shell,应该输入什么? D
A:q! B.quit C.; D.exit
17.在父目录不存在的时候,添加的参数是? D
A.-P B.-d C.-f D.-p
18.下列文件中,包含了主机名到IP地址映射关系的文件是? B
A./etc/hostname
B./etc/hosts
C./etc/resolv.conf
D./etc/networks
19.请问你使用的linux发行版是什么?如何查看linux发行版信息?
centos7 cat /etc/redhat-release
20.请问你公司的服务器环境是物理机仍是虚拟化?
500人企:
26台dell power r720服务器,托管在世 纪互联
经过vmware esxi虚拟化的280+linux服务器,有100+centos 100+redhat
分为三个环境
测试服务器、预生产服务器、生产服务器
技术栈:
svn 、java、apache、tomcat、oracle、nagios、redhat、centos、weblogic
初创企业:
5台阿里云
实体硬件服务器+虚拟化的回答方式
我的虚拟化 是 vmware workstation
企业版 vmware vsphere ,在服务器上,直接安装vmware vsphere的操做系统,而后提供了一个web管理界面,在web控制台,增删改查虚拟机
8台阿里云便可
21.vim有几种工做模式
22.nginx的主配置文件是?如何实现多虚拟主机?nginx反向代理参数是?
nginx.conf
server
proxy_pass
upstream 负载均衡
23.如何解压缩后缀是.gz文件?
tar 用来作归档
压缩方式
24.如何解压缩后缀是.tar文件?
tar xf
25.如何解压缩后缀是.xz文件?
tar xf
26.www服务在internet最为普遍,采用的结构是? B/S
27.如何给linux添加dns服务器记录? /etc/resolv.conf
28.每个月的5,15,25的晚上5点50重启nginx
crontab -e
50 17 5,15,25 * * nginx -s reload
29.每分钟清空/tmp/内容
* * * * * rm -rf /tmp/*
30.天天早上6.30清空/tmp/的内容
30 6 * * * rm -rf /tmp/*
31.每一个星期三的下午6点和8点的第5到15分钟之间备份mysql数据到/opt/
5-15 18,20 * * 3 mysqldump -uroot -p1234 > /opt/mysql.sql
32.某文件权限是drw-r—rw-,请解读该权限?
文件夹:
属主:读写
属组:只读
其余:读写
d:目录文件
rw- 属主:可读可写
r— 属组:可读 4
rw- other:可读可写
33.centos版本系统服务管理命令是?
systemctl
service nginx stop/start/restart centos6
systemctl stop/start/restart nginx
34.如何远程登陆阿里云123.206.16.61?
ssh
ssh root@123.206.16.61
35.备份mariadb的命令是? mysqldump -uroot -p -A(--all-databases) > mysql.sql
36.简述特殊符号的含义?
# 超级用户的身份标识符
. 当前目录
.. 上级目录
$PATH 环境变量
37.若是你发如今公司没法使用rm,使用提示’禁止你使用rm’,是为何?别名alias
38.如何修改test.py属组为alex? chgrep alex test.py
chown 更改属主
chgrp 更改属组 (chmod也能够i)
39.如何在windows和linux传输文件?有哪些方法? rz sz
xftp 第三方工具
lrzsz 第三方工具
scp linux的命令 windows没有
40.如何杀死mariad进程? pkill -9 mariadb killall -9 mariadb
pkill mariadb
ps -ef|grep mysql
kill pid
killall mariadb
41.简述dns解析流程?访问www.pythonav.cn的解析流程
- 查找本地hosts文件 - 去dns查找
42.linux如何安装软件?有几种方式?
yum
编译
rpm
43.出于安全角度,简述如何安装启动redis服务端?
44.如何保证本地测试环境和线上开发环境一致性?思路?
45.virtualenv是什么?简述如何使用
虚拟环境
pip install virualenv
virtualenv --no-site-package django1.11
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。全部第三方的包都会被pip安装到Python3的site-packages目录下。 若是咱们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。若是应用A须要jinja 2.7,而应用B须要jinja 2.6怎么办? 这种状况下,每一个应用可能须要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用建立一套“隔离”的Python运行环境。 1.安装 pip3 install virtualenv 2.建立虚拟环境 virtualenv —no-site-packages —python=python3 env1 3.激活虚拟环境 sourcce /opt/MyVirtualenv/venvDjango1/bin/activate 4.测试 python3 或者 pip3 list
46.virtulevnwrapper是什么?简述使用
virtualenv 的一个最大的缺点就是,每次开启虚拟环境以前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就须要咱们记住每一个虚拟环境所在的目录。 Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环 1.安装虚拟环境 pip3 install virtualenvwrapper 2.建立并进入虚拟环境 mkvirtualenv env1 3.切换虚拟环境 workon 虚拟环境名
管理虚拟环境的工具
mkvirtualenv
workon
deativate
rmvirtualenv
lsvirtualenv
cdvirtualenv
cdsitepackage
lssitepackage
redis是什么?
Redis是一个开源的基于内存的,key-value数据结构的缓存数据库,支持数据持久化rdb aof ,m-s复制,经常使用数据类型有string set hash list, 最佳应用场景:适用于数据变化快且数据库大小可碰见(适合内存容量)的应用程序。 例如:股票价格、数据分析、实时数据搜集、实时通信。 Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,平常环境中QPS高峰大约在1-2w左右) 其余nosql数据库? Memcached能够利用多核优点,单实例吞吐量极高,能够达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,平常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。 只支持简单的key/value数据结构,不像Redis能够支持丰富的数据类型。 没法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据所有丢失。 MongoDB 更高的写负载,MongoDB拥有更高的插入速度,支持高可用性,支持索引高速查询,占用磁盘空间较大,支持持久化
47.redis哨兵是什么?做用是
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案 redis哨兵是监控redis主从服务,不存储数据的,做用是用于自动切换reidis服务主从关系,即当主库服务中止后,会将其中一个从库变为主库
48.redis-cluster是什么?
redis集群
即便使用哨兵,redis每一个实例也是全量数据存储,每一个redis存储的内容都是完整的数据。 为了最大化利用内存,能够采用cluster群集,就是分布式存储。即每台redis存储不一样的内容。 采用redis-cluster架构正是知足这种分布式存储要求的集群的一种体现。redis-cluster架构中,被设计成共有16384个hash slot。每一个master分得一部分slot,其算法为:hash_slot = crc16(key) mod 16384 ,这就找到对应slot。采用hash slot的算法,其实是解决了redis-cluster架构下,有多个master节点的时候,数据如何分布到这些节点上去。key是可用key,若是有{}则取{}内的做为可用key,不然整个能够是可用key。群集至少须要3主3从,且每一个实例使用不一样的配置文件。
49.什么是静态资源,什么是动态资源?
静态资源 不须要和数据库打交道(指定的是网站的CSS/JS/HTML/JPG/GIF等等文件)
动态资源 须要和数据库打交道(通常指的是数据,即后端给前端提供的数据)
50.配置linux软链接的命令?
ln -s 源文件 目标文件
ln -s /opt/python3/bin/python3.6 /usr/bin/python3
51.如何永久添加/opt/python36/的环境变量?
echo "PATH=/opt/python36/bin:$PATH" >> /etc/profile.d/python.sh
vim /etc/profile #系统全局变量文件 添加PATH= source /etc/profile 1.获取python3解释器的bin目录,绝对路径 /opt/python3/bin/python3.6 2.打开/etc/profile 永久生效path配置 PHAT="/opt/python3/bin/python3.6:$PATH"
52.给以下代码添加注释
server{
listen 80;
server_name 192.168.11.11;
location / {
root html;
index index.html; #默认访问页面
}
}
server{
listen 8080;
server_name 192.168.11.11;
location / {
include uwsgi_params; #导入
uwsgi_pass 0.0.0.0:8000; #转发到uwsgi
}
}
server{ # 一个虚拟主机 listen 80; # 监听的端口,访问的端口80 server_name 192.168.11.11; # 访问的域名192.168.11.11 location /pic { # 访问的路径 192.168.11.11:80/pic root html; # 定义虚拟主机的网页根目录 index index.html # 指定网页,访问/就是访问index.html } } server{ #虚拟主机 listen 8080; #nginx监听端口 server_name 192.168.11.11; #nginx访问域名 location / { #location匹配url include uwsgi_params; #将uwsgi参数添加进nginx uwsgi_pass 0.0.0.0:8000; #反向代理转发请求给uwsgi } }
53.supervisor是什么?如何使用?
使用: 1.安装 easy_install supervisor 2.生成配置文件 echo_supervisord_conf > /etc/supervisor.conf 3.写入自定义的配置 [program:crm] ; 项目名称 command=/root/Envs/knight/bin/uwsgi —ini /opt/knight/uwsgi.ini ;启动项目的命令 stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程 4.启动supervisor服务 supervisord -c /etc/supervisor.conf 5.启动全部项目 supervisorctl -c /etc/supervisor.conf start all
54.简述项目部署流程?如何部署路飞,uwsgi+nginx+supervisor+nginx
部署路飞: 1.安装python3 环境 2.安装 mysql,redis,nginx 3.部署前端 1.安装node.js的环境 2.安装依赖包 3.修改axios的发送的端口接口 4.打包 4.部署后端 1.安装virtualenv 2.建立虚拟环境 3.安装django和uwsgi,以及项目的依赖包 4.修改uwsgi的配置文件 5.经过uwsgi -ini 配置文件启动django项目 5.配置nginx 1.建立两个虚拟主机,分别监听80和8000端口 2.访问80端口是访问呢vue 3.访问8000端口是vue发起的8000端口请求,反向代理到9000的uwsgi 6.启动nginx,mysql,redis 7.经过supervisor来管理
55.docker是什么?简述docker优点
linux容器软件
docker应用于快速构建应用
56.你经常使用的docker经常使用命令有哪些?操做镜像、容器、仓库的命令
docker image
docker ps
docker ps -a
docker ps -q
docker log
docker log -f
docker rm
docker rmi
docker load
docker save
docker search
docker pull
docker push
docker login
docker logout
docker build
docker run
docker stop
docker start
docker tag
docker ports
docker exec -ti /bash
docker images # 查看本地镜像 docker serach 镜像 # 经过docker hub搜索镜像 docker rmi 镜像 # 删除镜像 docker save 镜像 > 路径 # 导出镜像 docker load < 路径 # 导入镜像 docker build -t . # 打包生成镜像 操做容器命令: docker run -d 镜像 解释器 # 根据镜像生成容器,后台容许 docker run -it 镜像 解释器 # 根据镜像生成并进入容器 docker start/stop 容器id # 启动/中止容器 docker ps # 查看当前运行的容器 docker rm 容器id # 删除容器 docker exec 容器id # 进入当前正在运行的容器 docker commit 容器id 镜像名 # 将容器提交为镜像 docker contain ls # 查看当前运行的容器 docker tag 当前的镜像名 你要改为什么名字 操做仓库的命令: docker pull 镜像 # 下载镜像 docker push 镜像 # 推送镜像
57.哪一个命令没法查看linux文件内容?D
A.tac B.more C.head D.man
man(man帮助手册) tail -f 实时监测文件内容变化
58.使用rm -i 系统会提示什么信息?B
A.命令全部参数
B.是否真的删除
C.是否有写的权限
D.文件的路径
59.为什么说rm -rf 慎用? -r递归删除 -f强制删除
a60.python操做linux的模块是?
61.若是端口8080被占用,如何查看是什么进程?
ss -tnlp|grep 8080
netstat -tunlp | grep 8080
62.redis是如何作持久化的?
rdb Redis会按期保存数据快照至一个rdb文件中,并在启动时自动加载rdb文件,恢复以前保存的数据,经过save指令触发持久化,redis单独开启一个子进程进行数据持久化。 rdb缺点,按期执行,可能会丢失数据,而且数据量特别大时候,若是服务器cpu性能较低,rdb开启子进程持久化性能影响很大,影响redis对外提供服务的能力。 aof Redis会把每个写请求都记录在一个日志文件里。在Redis重启时,会把AOF文件中记录的全部写操做顺序执行一遍,确保数据恢复到最新。 随着AOF不断地记录写操做日志,由于全部的操做都会记录,因此一定会出现一些无用的日志。大量无用的日志会让AOF文件过大,也会让数据恢复的时间过长。 优先:数据安全,不怕数据损坏,如断电灯问题,还能够用redis-check-aof修复数据,AOF文件人为可读 缺点:占磁盘,性能损耗高,数据恢复慢 怎么用rdb和aof 若是既配置了RDB,又配置了AOF,则在进行数据持久化的时候,都会进行,可是在根据文件恢复数据的时候,以AOF文件为准,RDB文件做废
63.简述mysql主从复制原理?
(1) master将改变记录到二进制日志(binary log)中(这些记录叫作二进制日志事件,binary log events); (2) slave将master的binary log events拷贝到它的中继日志(relay log); (3) slave重作中继日志中的事件,将改变反映它本身的数据。
64.建立mysql用户alex,而且授予权限select权限,命令是什么?
create user 'alex'@'%' identified by 'alex3714'
grant select on *.* to 'alex'@'%'
flush privileges;
grant select on *.* to alex@’%’;
65.nginx如何实现负载均衡?
upstream myserver { server x.x.x.x server x.x.x.x } 定义服务器地址池 而后经过 转发参数便可 proxy_pass http://myserver ;
66.nginx的负载均衡调度算法有几种?是什么?
调度算法 概述 轮询 按时间顺序逐一分配到不一样的后端服务器(默认) weight 加权轮询,weight值越大,分配到的访问概率越高 ip_hash 每一个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器 url_hash 按照访问URL的hash结果来分配请求,是每一个URL定向到同一个后端服务器 least_conn 最少连接数,那个机器连接数少就分发 fail
67.linux下载软件包的方法有?
wget
curl
wget curl wget http://baidu.com/xiaocang.jpg
68.windows和linux经常使用远程链接工具备哪些?
xshell
Securecrt
putty
69.如何给与一个脚本可执行权限
chmod +x
70.过滤出settings.py中全部的空白和注释行
grep -v '^$' /etc/ssh/sshd_config |grep -v "^#" ##找出有益的信息
71.过滤出file1中以abc结尾的行
grep 'abc$'
72.容器退出后,经过docker ps查看不到,数据会丢吗?
不会 不会丢,由于容器中止了,并无被删除 docker ps -a能够看到
73.如何批量清理后台中止的容器
docker rm docker ps -a -q
#只会删除中止的容器记录
74.如何查看容器日志?
docker log
docker logs -f
75.服务器被攻击,吃光了全部的CPU资源,怎么办?禁止重装系统
top
ps aux --sort=%cpu
1.找到吃资源的进程信息 top glances(资源监控工具) 2.强制 kill -9 杀死 cxk.avi 3.检查定时任务 4.全局搜索病毒文件 find / -name cxk.avi 5. 强制删除 病毒文件
75.wsgi是什么?
WSGI是Web服务器网关接口。它是一个协议,描述了Web服务器如何与Web应用程序通讯。
76.Django中使用的是?
答:Django中实现wsgi的是:wsgiref和uwsgi,wsgiref是开发测试用的,uwsgi是线上用的。
Flask中实现wsgi的是:werkzurg
Tornado中实现wsgi的是:tornado和gevent
76.绘制下python web部署图
77.在centos7.2中用一句话杀死全部的test.py进程
pkill -9 test.py killall -9 test.py
78.在centos7.2中如何查看程序执行所消耗的cpu,内存等硬件信息
top
ps aux
79.unix查询环境变量的命令是
echo $PATH
80.查询脚本定时任务的命令是
crontab
81.saltstack、ansible、fabric、puppt工具的做用
批量管理远程服务器
82.uwsgi、wsgi是什么?
83.supervisor是什么?
84.解释PV,UV的含义?
pv page v
uv user v
85.解释QPS是什么?
每秒数据访问量
86.解释什么是静态资源?动态资源?
87.saltstack如何采集服务器静态数据?
slat '*' grains.items
88.请用yaml语法表示以下python数据结构
{
“老男孩”:[{“老师”:[“太白”,”女神”,”吴老板”]},{“学生”:[“20期佳增同窗”]}]
}
{ “老男孩”:[{“老师”:[“太白”,”女神”,”吴老板”]},{“学生”:[“20期佳增同窗”]}] } 老男孩: - 老师: - 太白 - 女神 - 吴超 - 学生: - 小黑 - 程宇
89.消息队列做用?
1)程序解耦 2)数据冗余,例如rabbitmq的ack机制,消息确认机制 3)削峰能力 4)可恢复性,就算系统中部分组件挂掉,消息在队列也不丢失,待组件恢复后继续处理消息。 5)异步通讯,如发红包,短信等流程丢入队列,能够优先级很低的去处理。
90.什么是docker生命周期?
91.docker容器有哪些状态?
92.dockerfile经常使用指令?
93.dockerfile中copy和add的区别
copy是 拷贝宿主机的文件 到容器中,仅此而已 add是 拷贝宿主机的文件 到容器中,而且有解压缩的做用
94.经常使用docker命令?
94.交互式进入正在运行的docker容器中
docker exec -it 容器id /bin/bash
95.如何退出一个交互式的容器终端,而不终止它?
ctrl+q
exit #会回退到宿主机系统中
96.容器如何端口映射?数据卷映射?
-p
-v
97.redis如何实现队列?
98.redis能够生产一次,消费屡次吗?
消息持久化
# durable=True 开启持久化,必须新开启一个队列,本来的队列已经不支持持久化了 ''' 实现rabbitmq持久化条件 delivery_mode=2
99.nginx的access.log可以统计哪些信息?
100.rabbitmq如何实现队列,消息持久化?
mode = 2
97.redis实现队列的方法
利用list数据类型的特性 ,双向队列
能够用 lpush 往左边插入数据,再利用rpop从右边取出数据
git经常使用命令
1:git init—————————初始化
2:git add .————————-从工做区,添加到版本库
3:git commit -m”xxx”————从暂存区,添加到分支
4:git status————————查看状态
5:git log —————————查看版本库的日志
6:git reflog————————查看全部日志
7:git reset —head 版本号—-切换
8:git stash————————-保存
9:git stash————————-将第一个记录从“某个地方”从新拿到工做区(可能有冲突)
git stash list——————————————————————————查看“某个地方”存储的全部记录
git stash clear—————————————————————————-清空“某个地方”
git stash pop——————————————————————————-将第一个记录从“某个地方”从新拿到工做区(可能有冲突)
git stash apply —————————————————————————编号,将指定编号记录从“某个地方”从新拿到工做区(可能有冲突)
git stash drop —————————————————————————编号 ,删除指定编号的记录
10:git branch dev—————建立分支
11:git branch -d dev———-删除分支
12:git checkout dev————切换分支
13:git merge dev—————-合并分支
14:git branch———————查看全部分支
15:git clone https:xxx——-克隆
16:git add origin https:xxx-起个别名
17:git push origin dev ——添加到dev分支
18:git pull origin master—拉代码
19:git fetch origin master-去仓库获取
20:git merge origin/master-和网上下的master分支合并
协同开发:
默认是master分支——————————master
开发的分支—————————————dev
作代码review————————————reciew
程序员本身的分支——————————…….
1:每一个员工建立本身的分支
2:将本身的代码提交的到本身的分支—————xxx,sss,wwww…….
3:由组长或老大作代码的review,——————-代码提交的review分支
4:再提交到dev.
5: 再合并到master分支
熟悉 Linux经常使用操做。 1:man rm———————————————查看命令帮助 2:mkdir———————————————-建立目录 3:touch———————————————-建立文件 4:cd—————————————————切换。 5:ls—————————————————查看目录 6:ls -lh————————————————查看目录详细 7:pwd————————————————-查看当前目录 8:vim————————————————-添加内容 9:echo————————————————追加内容 10:cat————————————————查看文件内容 11:mv————————————————-移动 12:cp————————————————-拷贝 13:mv————————————————重命名 15:find———————————————-搜索 16:rm————————————————-删除数据 17:ping———————————————-查看能不能上网 19:tar cf ————————————————打压缩 20:tar xf——————————————-解压缩 安装: yum install rpm包安装 编译安装 快捷键: 1:Tab键—————————————-自动补全命令或路劲。 2:ctrl+l—————————————清屏 3: ctrl+c—————————————取消当前操做 4:vi/vim 快捷键: 复制当前行 ——————————yy 粘贴—————————————-p 剪切—————————————-dd 撤销—————————————-u 恢复—————————————-ctrl + r