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