Linux----知識儲備

----------------------------------------------------------------------基礎-----------------------------------------------------------------------------------
0:查找linux中全部有毒的進程,並將有毒的進程殺掉?
	答:

1:鏈接工具鏈接不上linux:
	(1):ping一下。--------------------------------------------------------->檢查網卡是否啓動。
	
	(2):IPtable Selinux---------------------------------------------------->是否有網絡劫持
	
	(3):telent ip地址 端口------------------------------------------------->是否提供想要的服務
	
2:linux沒法上網:
	確認是不是DNS問題----------------------------------------------------->ping 223.5.5.5或者ping 114.114.114.114
	
	修復網卡DNS-----------------------------------------------------------> vim /etc/sysconfig/network-scripts/ifcfg-eth0

3:端口:
	22-------------------------------------------------------------->遠程鏈接端口
	
	80-------------------------------------------------------------->
	
	8080------------------------------------------------------------>
	
	443------------------------------------------------------------->
	
4:基本命令:

	1:Standard commands(標準命令)
	2:System calls(系統調用)
	3:Lisbrary functions(系統調用)
	4:Special devices(設備說明)
	5:FIle formats(文件格式)
	6:Games and toys(遊戲和娛樂)
	7:Miscellaneous(雜項)
	8:Adminisrative Commands(管理員命令)

	目錄:---------------------------------------------------------:mkdir
		man rm----------------------------------------------------------------->查看幫助命令
		
		history---------------------------------------------------------------->查看命令歷史

		mkdir------------------------------------------------------------------>建立目錄
		
		ls--------------------------------------------------------------------->查看目錄
		
		ls_l------------------------------------------------------------------->查看詳細目錄
		
		pwd-------------------------------------------------------------------->查看當前目錄
		
		cd--------------------------------------------------------------------->切換目錄
	
	文件:---------------------------------------------------------:touch

		touch------------------------------------------------------------------>建立文件
		
		cat-------------------------------------------------------------------->查看文件內容
		
		head------------------------------------------------------------------->查看文件頭幾行

		tail------------------------------------------------------------------->查看文件末尾幾行

		more------------------------------------------------------------------->一頁一頁查看文件

		vim-------------------------------------------------------------------->打開編輯器,編輯文件
		
		echo------------------------------------------------------------------->追加文件(echo"文件內容">>追加文件,>清空文件並追加)
		
		cp--------------------------------------------------------------------->拷貝文件
		
		mv--------------------------------------------------------------------->移動文件
		
		bak-------------------------------------------------------------------->備份文件
		
		avi-------------------------------------------------------------------->重命名
		
		rm--------------------------------------------------------------------->刪除文件(rm "文件" -f[強制刪除],rm "文件" -r[刪除目錄],rm"文件" -ff[強制刪除目錄])
		
		find -type f -name "文件"---------------------------------------------->搜索文件(find -type d -name "目錄")
		
		cd ../../-------------------------------------------------------------->退出到上級目錄
			.. 當前目錄的上級目錄
			.  當前目錄
		
	管道:---------------------------------------------------------:將前面的結果當作後面的輸出(|),將標準輸出當作命令的參數(|xrange)
		-:find /root/ -type f -name "*.log" |xargs ls -l
		-:find / -type f -name "*.txt" -size +1M |xargs ls -l
			
	生成序列:-----------------------------------------------------:seq
		-: seq 10 -1 1--------------------------------------------生成序列
			-: seq 10 -1 1 >nginx.conf--------------------------------文件中添加序列號
			-: cat -n nginx.conf--------------------------------------顯示行號
			vi/vim:
				:set nu-----------------------------------------------顯示行號
				:set number
				:set nonu---------------------------------------------不顯示行號
				G-----------------------------------------------------快速到達文件最後一行
				gg----------------------------------------------------快速到達文件第一行
				10gg--------------------------------------------------快速到達文件某一行
	
	壓縮解壓縮:---------------------------------------------------:tar
		tar zcf /tmp/etc.tar.gz/ /etc/-----------------------------建立壓縮包(tar zcf)
			z ========= gzip    軟件進行壓縮 .tar.gz
			c ========= create  打包,建立包
			v ========= verbose 顯示過程
			f ========= file    指定壓縮包
		tar tf /tmp/etc.tar.gz--------------------------------------查看壓縮包(tar tf)
			cd /tmp/
			tar xf etc.tar.gz				

		tar xf etc.tar.gz-------------------------------------------解壓到當前目錄(tar xf)
		
	建立多級目錄:-------------------------------------------------:mkdir -p /1/2/3
	
	替換-----------------------------------------------------------:sed
		-: sed 's#oldboy#oldgirl#g' t.sh---------------------------替換
		-:sed 's#oldboy#oldgirl#g' t.sh---------------------------把/oldboy目錄及其子目錄下全部以擴展名 .sh結尾的文件中,文件包含oldboy的字符串所有替換爲oldgirl
		-:find /oldboy/ -type f  -name "*.sh"|xargs sed 's#oldboy#oldgirl#g'
		
	備份並修改:----------------------------------------------------:sed i.bak t.sh
			-:sed -i.bak 's#oldboy#oldgirl#g' t.sh-----------------------備份並修改

	查看文件內容:-------------------------------------------------:cat t.sh
		-: cat t.sh--------------------------------------------查看文件內容
		-: find /oldboy/ -type f -name "*.sh"|xargs  sed 's#oldboy#oldgirl#g' -i
		-: find /oldboy/ -type f -name "*.sh"|xargs cat
		-:find /oldboy/ -type f  -name "*.sh"|xargs cat 
			
	查看區間:-----------------------------------------------------:awk
		-:awk   'NR==20'  ett.txt
		-:awk   'NR>=20 && NR<=30'  ett.txt
		
	mysql基本命令:------------------------------------------------:mysql
		mysql
		mysql  -p
		mysqladmin password 123456
		進入數據庫內,create database

		pip基本命令
		pip3 freeze >requirements.txt     打包你下載過的模塊
		pip3 install -r requirements.txt  

	平常debug命令:
		ps aux|grep------------------------------------查看進程
		ss -lnp|grep-----------------------------------看端口
		telnet 127.0.0.1 6379--------------------------鏈接端口測試
		kill  -----------------------------------------結束進程 
		curl-------------------------------------------域名   

	權限:----------------------------------------------------------: chmod
		chmond---------------------------------------------數字
		chown----------------------------------------------字母
		
	重定向:-------------------------------------------------------:command
		輸入重定向------------------------------command-line <file
		輸出重定向------------------------------command > filename
	
	查看進程:-----------------------------------------------------:ps
		
	建立用戶:-----------------------------------------------------:mkuser
	
	計算文件的行數:-----------------------------------------------:wc
		
	其餘:
		查看用戶ID------------------------------------------: id root

		帳號創建時自動建立(爲初始組)------------------------:gid
		
		一個用戶屬於初始組,後續新增的----------------------:groups
	
		查看進程--------------------------------------------:
	
		
5:軟件安裝:
	yum 安裝:----------------------------------------------------->本身解決依賴: yum。
		yum install nginx
		
	rpm包安裝:---------------------------------------------------->本身手動解決依賴:rpm。
		查詢軟件是否安裝------------------------------------------- rpm -qa  
		查詢軟件包的內容------------------------------------------- rpm -ql 
		安裝rpm包-------------------------------------------------- rpm -ivh 
	
	編譯安裝:----------------------------------------------------->本身下載包:make。
		
6.顯示磁盤使用狀況-------------------------------------------------:df -h 
		掛載 --------------------------------------------- mount
		顯示前幾行的內容  默認前10行 --------------------- head 
		顯示最後幾行的內容  默認最後10行 ----------------- tail 
		顯示前5行----------------------------------------- head -5  /etc/passwd	
	
7:關閉iptables和selinux--------------------------------------------:關閉防火牆
	iptables:
		1.臨時關閉防火牆-重啓後失效(關兩次,一次可能關不了)------------------- /etc/init.d/iptables stop
									------------------------------------------ /etc/init.d/iptables stop 
									
		2.永久關閉防火牆-重啓服務器以後生效,開機自啓動 ---------------------- chkconfig iptables off  
					查看所有開啓狀態------------------------------------------ chkconfig
					查看iptables開啓狀態-------------------------------------- chkconfig |grep iptables
	selinux:				
		1.臨時 -重啓服務器以後失效
				   查看當前selinux狀態---------------------------------------- getenforce
				   查看當前selinux狀態碼(用於切換)---------------------------- setenforce
						usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
				   關閉selinux------------------------------------------------ setenforce 0
		2.永久 -重啓服務器以後生效
				   查找:----------------------------------------------------- sed  's#SELINUX=enforcing#SELINUX=disabled#g'  /etc/selinux/config
				   備份:----------------------------------------------------- sed -i.bak  's#SELINUX=enforcing#SELINUX=disabled#g'  /etc/selinux/config
				   關閉:----------------------------------------------------- grep 'disabled' /etc/selinux/config		
					
8:運行級別:
		0:關機狀態 
		1:單用戶模式  從新設置root密碼           √
		2:多用戶模式 沒有NFS(存儲 )
		3:徹底的多用戶模式 命令行模式 文本模式   √
		4:未被使用的
		5:桌面模式  圖形界面模式                 √
		6:重啓狀態
		命令:
			1:查詢當前用戶的運行級別-------------------------------------------- runlevel
			2:臨時修改運行級別-------------------------------------------------- init 4
			3:永久修改運行級別-------------------------------------------------- runlevel 3 4
			4:					------------------------------------------------- tail -1 /etc/inittab 
			5:                 ------------------------------------------------- cat /etc/redhat-release
			6:                 ------------------------------------------------- uname -r
		如何進入單用戶狀態:
		·	重啓後按任意鍵進入單用戶模式-------->進入GRUB菜單-------->按a編輯內核參數-寫入1或single------->成功進入單用戶
										-------->選擇kernel這行 按e編輯系統信息-------->編輯內核信息加上1或single編輯後按回車-------->編輯內核後按b進入當用戶模式
			1:重啓-------------------------------------------------------------- shutdown -r 10
			2:取消-------------------------------------------------------------- Ctrl+c
				  --------------------------------------------------------------- shutdown -c
		如何進入救援模式(*非特殊狀況謹慎使用)------------------------------------ resuce installed system 
			
9:添加新用戶:	---------------------------------------------------:useradd		
		添加用戶:----------------------------------------------------------- useradd  oldboy
			1:查看添加的用戶------------------------------------------------ id oldboy
			2: 查看當前用戶-------------------------------------------------- id
		設置密碼:----------------------------------------------------------- passwd  oldboy
		
		切換用戶:----------------------------------------------------------- su - oldboy
				查看當前用戶:----------------------------------------------- whoami
				退出當前用戶:----------------------------------------------- Ctrl+d
		
					
	sl--------------------------------小火車
	
10:定時任務:-----------------------------------------------------:crontab
	1:查看定時任務(list)-----------------------------------------------------crontab -l
	2: 編輯定時任務(edit)-----------------------------------------------------crontab -e  
	
		天天的晚上12點準時回家開車(go to bed)-----------------------------------00 00 * * * go to bed 
 
		天天的早上8點30分來學校上車(go to school)-------------------------------30 08 * * * go to school 
		
	3:定時任務中的特殊符號1. * 每 ,每分鐘把本身的名字 追加到/tmp/oldboy.log中

		(1):測試每分鐘把本身的名字 追加到/tmp/oldboy.log中------------------------ echo oldboy >>/tmp/oldboy.txt 
		(2):查看------------------------------------------------------------------ cat /tmp/oldboy.txt
		(3):寫入定時任務,修改定時任務內容,並檢查--------------------------------- crontab -l
		(4):修改定時任務---------------------------------------------------------- crontab -e
											#print name to file by oldboy at 20181111
											* * * * *  echo oldboy >>/tmp/oldboy.txt
		(6):查看------------------------------------------------------------------ tail -f  /tmp/oldboy.txt 
		(7):查看定時任務的日誌---------------------------------------------------- ls -l /var/log/cron 
	
	4. */10 每3分鐘同步一下系統的時間 ,/usr/sbin/ntpdate
		(1):同步阿里雲時間-------------------------------------------------------- /usr/sbin/ntpdate  ntp1.aliyun.com
		(2):查看當前時間---------------------------------------------------------- date
			手動修改(不推薦)------------------------------------------------------ date -s "20180101"
		(3):查看定時任務---------------------------------------------------------- crontab -l
		(4):添加定時任務--------------------------------------------------------- crontab -e
			#sync time by oldboy at 20181111
			*/3 * * * *  /usr/sbin/ntpdate  ntp1.aliyun.com
		(5):退出並保存------------------------------------------------------------- :wq	
		(6):查看定時任務的日誌----------------------------------------------------- ls -l /var/log/cron 

	5:要把定時任務中命令或腳本的執行 定向到空或追加到文件
		/usr/sbin/ntpdate  ntp1.aliyun.com >/dev/null         2>&1
		echo oldboy                        >>/tmp/oldboy.txt  2>&1
		
11:上傳下載文件:-------------------------------------------------: rz,sz
	用戶訪問系統的記錄(看是否有人破解你的密碼)----------------------------------- ll /var/log/secure
	windows文件上傳到linux------------------------------------------------------- rz  .tar.gz 
	把Linux文件下載到windows----------------------------------------------------- sz  .tar.gz 
		.zip--------------------------------------------------------------------- 壓縮包是linux和windows默認支持的。
	下載壓縮包------------------------------------------------------------------- wget http://nginx.org/download/nginx-1.12.2.tar.gz	
		xshell------------------------------------------------------------------- 遠程鏈接 
		xftp ftp工具------------------------------------------------------------- 上傳大文件 
		https://www.netsarang.com/download/down_form.html?code=523--------------- xftp下載網址
	查看日誌: 
		1.less   f或空格向下一頁  b上一頁
		2.head/tail 
		3.grep 
		grep 'Failed password'  secure-20161219	
	
12:nginx: 
		下載nginx包--------------------------------------------------------------------------------- wget http://nginx.org/download/nginx-1.12.2.tar.gz
		編譯安裝nginx前的準備:
				1.添加一個用戶:
					 建立虛擬用戶(linux每一個進程要有一個對應的用戶)------------------------------ useradd -s /sbin/nologin -M  www
					 查看這個用戶--------------------------------------------------------------- id www
								---------------------------------------------------------------- su - www
				2.安裝nginx依賴軟件包
					pcre-devel------------------------------------- perl語言的兼容正則表達式
					openssl-devel---------------------------------- https
					安裝------------------------------------------------------------------------- yum install pcre-devel openssl-devel -y
					查看是否安裝----------------------------------------------------------------- rpm -qa pcre-devel openssl-devel
					查看------------------------------------------------------------------------- ll  /mnt/Packages/pcre-devel-7.8-7.el6.x86_64.rpm
																									 /mnt/Packages/openssl-devel-1.0.1e-57.el6.x86_64.rpm 
				3.編譯安裝nginx:
					1:解壓nginx安裝包------------------------------------------------------------- tar xf nginx-1.12.2.tar.gz
					2:cd到root目錄下的nginx-1.12.2------------------------------------------------ cd nginx-1.12.2
					3:安裝------------------------------------------------------------------------ ./configure  --user=www --group=www
																									--prefix=/application/nginx-1.12.2 
																									--with-http_stub_status_module  
						參數:																			--with-http_ssl_module
							--user   用戶 
							--group  用戶組
							--prefix 安裝到哪裏
							兩個模塊--with-http_stub_status_module  --with-http_ssl_module
					4:--------------------------------------------------------------------------- echo $?
					5:--------------------------------------------------------------------------- make 
					6:--------------------------------------------------------------------------- make install 
					7:--------------------------------------------------------------------------- md5sum /root/nginx-1.12.2.tar.gz 
																		4d2fc76211435f029271f1cf6d7eeae3  /root/nginx-1.12.2.tar.gz
					8:--------------------------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx -t
														nginx: the configuration file /application/nginx-1.12.2/conf/nginx.conf syntax is ok
														nginx: configuration file /application/nginx-1.12.2/conf/nginx.conf test is successful


					9:--------------------------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx 
					10:-------------------------------------------------------------------------- ss -lntup|grep 80
						tcp    LISTEN     0      128                    *:80                    *:*      users:(("nginx",4377,6),("nginx",4378,6))

					

					11:-------------------------------------------------------------------------- pwd(若在root目錄,cd到下面目錄)
																			/application/nginx-1.12.2
					12:-------------------------------------------------------------------------- ll
							total 36
							drwx------ 2 www  root 4096 Mar 15 10:31 client_body_temp
							drwxr-xr-x 2 root root 4096 Mar 15 10:00 conf------------------------- nginx配置文件的目錄
							drwx------ 2 www  root 4096 Mar 15 10:31 fastcgi_temp
							drwxr-xr-x 2 root root 4096 Mar 15 10:00 html------------------------- nginx站點目錄 網站的根目錄 
							drwxr-xr-x 2 root root 4096 Mar 15 10:31 logs------------------------- nginx日誌
							drwx------ 2 www  root 4096 Mar 15 10:31 proxy_temp
							drwxr-xr-x 2 root root 4096 Mar 15 10:00 sbin------------------------- nginx命令
							drwx------ 2 www  root 4096 Mar 15 10:31 scgi_temp
							drwx------ 2 www  root 4096 Mar 15 10:31 uwsgi_temp
					13:顯示樹形結構--------------------------------------------------------------- tree		
		優雅的重啓nginx ---------------------------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx  -s reload 
		關閉nginx 而後開啓-------------------------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx  -s stop 
						---------------------------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx  
		搭建www.etiantian.org網站流程
				1.修改nginx.conf文件
					查看---------------------------------------------------------------------------- cat conf/nginx.conf
					添加內容------------------------------------------------------------------------ vim conf/nginx.conf
					按小寫字母i------------------------------------------------------進入編輯模式
					esc--------------------------------------------------------------退出編輯模式
					:wq---------------------------------------------------------------退出並保存
					:q!---------------------------------------------------------------強制退出不保存
					worker_processes  1;
					events {
						worker_connections  1024;
					}
					http {
						include       mime.types;
						default_type  application/octet-stream;
						sendfile        on;
						keepalive_timeout  65;
						server {
							listen       80;
							server_name  www.etiantian.org;
							location / {
								root   html/www;
								index  index.html index.htm;
							}
							error_page   500 502 503 504  /50x.html;
							location = /50x.html {
								root   html;
							}
						}
					}

				2.建立環境 --------------------------------------------------------------- mkdir -p /application/nginx-1.12.2/html/{www,bbs,blog}
							----------for name in www bbs blog;do echo $name.etiantian.org> /application/nginx-1.12.2/html/$name/index.html ;done
							--------------------------------for name in www bbs blog;do cat /application/nginx-1.12.2/html/$name/index.html ;done

				3.檢查語法並重啓 --------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx -t
											nginx: the configuration file /application/nginx-1.12.2/conf/nginx.conf syntax is ok
											nginx: configuration file /application/nginx-1.12.2/conf/nginx.conf test is successful
								  -------------------------------------------------------- /application/nginx-1.12.2/sbin/nginx -s reload 

				4.windows測試 瀏覽器(注意緩存)
					(1)修改 \etc\hosts 
						10.0.0.200  www.etiantian.org bbs.etiantian.org blog.etiantian.org 
					(2)瀏覽器測試 

				5.Linux命令行測試 -------------------------------------------------------- curl -vH Host: www.etiantian.org 10.0.0.200
		排錯流程:
			1.linux命令行是否能顯示 ------------------------------------------------------ curl -vH Host:www.etiantian.org 10.0.0.200

			2.windows 本地shell ---------------------------------------------------------- ping 				
		搭建多個網站:
				流程相同,只是在nginx.conf	多來幾個server。
					[root@oldboyedu-s6 nginx-1.12.2]# cat conf/nginx.conf
					worker_processes  1;
					events {
						worker_connections  1024;
					}
					http {
						include       mime.types;
						default_type  application/octet-stream;
						sendfile        on;
						keepalive_timeout  65;
						server {
							listen       80;
							server_name  www.etiantian.org;
							location / {
								root   html/www;
								index  index.html index.htm;
							}
							error_page   500 502 503 504  /50x.html;
							location = /50x.html {
								root   html;
							}
						}
						server {      
							listen       80;
							server_name  bbs.etiantian.org;
							location / {
								root   html/bbs;
								index  index.html index.htm;
							}
							error_page   500 502 503 504  /50x.html;
							location = /50x.html {
								root   html;
							}
						}   
						server {      
							listen       80;
							server_name  blog.etiantian.org;
							location / {
								root   html/blog;
								index  index.html index.htm;
							}
							error_page   500 502 503 504  /50x.html;
							location = /50x.html {
								root   html;
							}
						}   

					}

			測試:
				--------------------------------------------------------- curl -H Host:bbs.etiantian.org 10.0.0.200
																bbs.etiantian.org
				--------------------------------------------------------- curl -H Host:blog.etiantian.org 10.0.0.200
																blog.etiantian.org
		
13:linux啓動過程:		
	Linux是一種自由和開發源代碼的類Unix操做系統。
			整個過程基本能夠分爲:POST---->BIOS---->MBR(GRUB)---->Kernel---->Init---->Runlevel。
			Blos:---------------------------------硬件檢測
			MBR:----------------------------------存儲BootLoader信息,加載磁盤上的MBR
			GRUB:---------------------------------查找並加載kernel
			kernel:-------------------------------卸載驅動,掛載rootfs,執行/sbin/int
			init:---------------------------------OS初始化,執行runlevel相關程序
			Runlevel:-----------------------------啓動指定級別服務
	
14:如何重置mysql root密碼?

	一:在已知MYSQL數據庫的ROOT用戶密碼的狀況下,修改密碼的方法:
		1:在shell環境下,使用mysqladmin命令設置:
			mysqladmin –u root –p password 「新密碼」   回車後要求輸入舊密碼
		
		2:在mysql>環境中,使用update命令,直接更新mysql庫user表的數據: 9999999
			Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
			flush   privileges;
			注意:mysql語句要以分號」;」結束	
		3:在mysql>環境中,使用grant命令,修改root用戶的受權權限。
			grant  all  on  *.*  to   root@’localhost’  identified  by  ‘新密碼’;
	二如查忘記了mysql數據庫的ROOT用戶的密碼,又如何作呢?方法以下:

		1:關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加爲系統服務)

		2:使用mysqld_safe腳本以安全模式(不加載受權表)啓動mysqld 服務
			/usr/local/mysql/bin/mysqld_safe  --skip-grant-table  &
			
		3:使用空密碼的root用戶登陸數據庫,從新設置ROOT用戶的密碼
		  #mysql  -u   root
		   Mysql> Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
		   Mysql> flush   privileges;
		   
15:nginx優缺點

	Nginx的優勢是:
		1:工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構
			它的正則規則比HAProxy更爲強大和靈活,這也是它目前普遍流行的主要緣由之一
			Nginx單憑這點可利用的場合就遠多於LVS了。

		2:Nginx對網絡穩定性的依賴很是小,理論上能ping通就就能進行負載功能,這個也是它的優點之一
			相反LVS對網絡穩定性依賴比較大,這點本人深有體會;

		3:Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來
			LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。

		4:能夠承擔高負載壓力且穩定,在硬件不差的狀況下通常能支撐幾萬次的併發量,負載度比LVS相對小些。

		5:Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,
		 而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測。好比用戶正在上傳一個文件,
		 而處理該上傳的節點恰好在上傳過程當中出現故障,Nginx會把上傳切到另外一臺服務器從新處理,而LVS就直接斷掉了
		 若是是上傳一個很大的文件或者很重要的文件的話,用戶可能會所以而不滿。

		6:Nginx不只僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器
			LNMP也是近幾年很是流行的web架構,在高流量的環境中穩定性也很好。
		7:Nginx如今做爲Web反向加速緩存愈來愈成熟了,速度比傳統的Squid服務器更快,可考慮用其做爲反向代理加速器

		8:Nginx可做爲中層反向代理使用,這一層面Nginx基本上無對手,惟一能夠對比Nginx的就只有lighttpd了
			不過lighttpd目前尚未作到Nginx徹底的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍
		9:Nginx也可做爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區很是活躍,第三方模塊也不少

	Nginx的缺點是:
		1:Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點

		2:對後端服務器的健康檢查,只支持經過端口來檢測,不支持經過url來檢測
			不支持Session的直接保持,但能經過ip_hash來解決
			LVS:使用Linux內核集羣實現一個高性能、高可用的負載均衡服務器
			它具備很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

16:mysql數據備份工具
	mysqldump工具
		mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump
		支持基於innodb的熱備份,可是因爲是邏輯備份,因此速度不是很快,適合備份數據比較小的場景
	Mysqldump徹底備份+二進制日誌能夠實現基於時間點的恢復。
	
	基於LVM快照備份
		在物理備份中,有基於文件系統的物理備份(LVM的快照),也能夠直接用tar之類的命令對整個數據庫目錄
		進行打包備份,可是這些只能進行泠備份,不一樣的存儲引擎備份的也不同,myisam自動備份到表級別
		而innodb不開啓獨立表空間的話只能備份整個數據庫。

	tar包備份
		percona提供的xtrabackup工具
		支持innodb的物理熱備份,支持徹底備份,增量備份,並且速度很是快,支持innodb存儲引發的數據在不一樣
		數據庫之間遷移,支持複製模式下的從機備份恢復備份恢復,爲了讓xtrabackup支持更多的功能擴展
		能夠設立獨立表空間,打開 innodb_file_per_table功能,啓用以後能夠支持單獨的表備份
		
		

	39:請寫出下面 linux SecureCRT 命令行快捷鍵命令的功能?
		Ctrl + a —->光標移動到行首

		Ctrl + e —->光標移動到行尾

		Ctrl + c —->終止當前程序

		Ctrl + d —->若是光標前有字符則刪除,沒有則退出當前中斷

		Ctrl + l —->清屏

		Ctrl + u —->剪切光標之前的字符

		Ctrl + k —->剪切光標之後的字符

		Ctrl + y —->複製u/k的內容

		Ctrl + r —->查找最近用過的命令

		tab —->命令或路徑補全

		Ctrl+shift+c —->複製

		Ctrl+shift+v —->粘貼		

17. OSI7層模型?
	答:
		物理層,數據鏈路層,網絡層,傳輸層,表示層,會話層,表示層,應用層。

18. Http和Https?
	答:
		http是超文本傳輸協議,是一個基於TCP/IP通訊協議來傳送數據,屬於應用層的面向對象協議。
		http工做於客戶端,瀏覽器做爲HTTP客戶端經過URL向http服務端(web服務器)發送請求,建立一個TCP鏈接,指定端口號,默認是80。
		而後鏈接到服務器工做。在那個端口監聽瀏覽器請求。一旦監聽到客戶端請求,分析請求類型後,
		服務器會向客戶端返回一個響應狀態,好比"HTTP/1.0 404 OK",同時會返回特定的數據內容。-------如請求的資源,錯誤代碼,其它狀態信息等等。
		主要體如今短鏈接,無狀態。
		**:請求頭和請求體是經過什麼分割的,兩個/r/n。
		**                                ,一個/r/n
		請求包括:請求首行,請求頭信息,空行,請求體。
		響應包括:響應行,響應頭,響應體,狀態碼等
			1.域名解析 
			2. 發起TCP的3次握手 
			3. 創建TCP鏈接後發起http請求 
			4. 服務器端響應http請求,瀏覽器獲得html代碼 
			5. 瀏覽器解析html代碼,並請求html代碼中的資源 
			6. 瀏覽器對頁面進行渲染呈現給用戶

19. ARP協議?
	答:地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。
	主機發送信息時將包含目標IP地址的ARP請求廣播到網絡上的全部主機,並接收返回消息,以此肯定目標的物理地址;
	收到返回消息後將該IP地址和物理地址存入本機ARP緩存中並保留必定時間,下次請求時直接查詢ARP緩存以節約資源。
	地址解析協議是創建在網絡中各個主機互相信任的基礎上的,網絡上的主機能夠自主發送ARP應答消息,
	其餘主機收到應答報文時不會檢測該報文的真實性就會將其記入本機ARP緩存;由此攻擊者就能夠向某一主機發送僞ARP應答報文,
	使其發送的信息沒法到達預期的主機或到達錯誤的主機,這就構成了一個ARP欺騙。
	ARP命令可用於查詢本機ARP緩存中IP地址和MAC地址的對應關係、添加或刪除靜態對應關係等。相關協議有RARP、代理ARP。NDP用於在IPv6中代替地址解析協議。
	
20. TCP和UDP區別?
	答:tcp:可靠的、面向鏈接的協議(eg:打電話)、傳輸效率低全雙工通訊(發送緩存&接收緩存)、面向字節流。
			使用TCP的應用:Web瀏覽器;電子郵件、文件傳輸程序。
			tcp是基於連接的,必須先啓動服務端,而後再啓動客戶端去連接服務端
			
		udp:不可靠的、無鏈接的服務,傳輸效率高(發送前時延小),一對1、一對多、多對1、多對多、面向報文,盡最大努力服務,無擁塞控制。
			使用UDP的應用:域名系統 (DNS);視頻流;IP語音(VoIP)。
			udp是無連接的,先啓動哪一端都不會報錯

21.ftp協議?
	答:
		文件傳輸協議(FTP)做爲網絡共享文件的傳輸協議,在網絡應用軟件中具備普遍的應用。
		FTP的目標是提升文件的共享性和可靠高效地傳送數據。
		在傳輸文件時,FTP 客戶端程序先與服務器創建鏈接,而後向服務器發送命令。服務器收到命令後給予響應,並執行命令。
		FTP 協議與操做系統無關,任何操做系統上的程序只要符合 FTP 協議,就能夠相互傳輸數據。本文主要基於 LINUX 平臺,
		對 FTP 客戶端的實現原理進行詳盡的解釋並闡述如何使用 C 語言編寫一個簡單的 FTP 客戶端。

22. DNS解析?
	答:
		人們習慣記憶域名,但機器間互相只認IP地址,域名與IP地址之間是多對一的關係,一個ip地址不必定只對應一個域名,
		且一個域名只能夠對應一個ip地址,它們之間的轉換工做稱爲域名解析,域名解析須要由專門的域名解析服務器來完成,整個過程是自動進行的。
		
		1:用戶要訪問www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,若是也沒有的話,
		2:就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,
		3:一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,
		4:二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,
		5:而後發給請求的服務器,保存一份以後,再發給客戶端
		
23. 三次握手、四次揮手?
	答:
		三次握手:是指創建一個TCP鏈接時,須要客戶端和服務器總共發送3個包。
			一次握手:客戶端發送一個TCP的SYN標誌位置1的包。----------指明客戶打算鏈接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段裏。
			二次握手:服務器發回確認包(ACK)應答。---------------------即SYN標誌位和ACK標誌位均爲1同時,將確認序號(Acknowledgement Number)設置爲客戶的I S N加1以.即X+1
			三次握手:客戶端再次發送確認包(ACK)。--------------------SYN標誌位爲0,ACK標誌位爲1.而且把服務器發來ACK的序號字段+1,放在肯定字段中發送給對方.而且在數據段放寫ISN的+1
				三次握手完成,客戶端與服務器開始傳送數據。
				三次握手目的:同步鏈接雙方的序列號和確認號,並交換TCP窗口大小信息
		四次揮手:
			四次揮手:就是TCP的鏈接關閉須要發送四個包,所以稱爲四次揮手(four-way handshake)。-----------------------------客戶端或服務器都可主動發起揮手動做,在socket編程中,任何一方執行close()操做便可產生揮手操做。
			1. 主動關閉一端會向被動端發送FIN終止信號序列,關閉數據傳輸。--------------------------------------------------主動端狀態變爲FIN_WAIT_1。此時關閉了主動端向被動端的數據傳輸。
			2. 被動端收到FIN後,向主動端發送一個ACK序列(值爲FIN序號加1),此時被動端向主動端的數據傳輸尚未關閉。-------完成發送後被動端狀態置爲CLOSE_WAIT,此時被動端向主動端的數據傳輸尚未關閉。
			3. 主動端收到被動端發送的ACK響應序列,被動端關閉與客戶端的鏈接,向主動端發送一個FIN終止信號序列。-------------被動端狀態會切換爲LAST_ACK(最後一個響應狀態)。
			4. 主動端收到被動端發出的FIN,接着發送ACK響應序列到被動, 被動端收到ACK後,釋放掉socket資源。------------------
		爲何鏈接的時候是三次握手,關閉的時候倒是四次握手?
			答:由於當Server端收到Client端的SYN鏈接請求報文後,能夠直接發送SYN+ACK報文。
			其中ACK報文是用來應答的,SYN報文是用來同步的。可是關閉鏈接時,當Server端收到FIN報文時,
			極可能並不會當即關閉SOCKET,因此只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。
			只有等到我Server端全部的報文都發送完了,我才能發送FIN報文,所以不能一塊兒發送。故須要四步握手。:
									
24. 路由器和交換機的區別?
	答:交換機用來共享一根網線,路由器用來共享一個IP。
		也就是說,若是一根網線上想接幾個電腦,就必須用"交換機",
		若是你只有一個IP,想幾個電腦上網,就要用路由器來解決。
		好比寬帶路由器就可讓家裏的幾臺電腦共享同一個帳號上網;
		在已經共享上網的狀況下,某房間只有一根網線,有多臺電腦要上網,用交換機。
					
25. 進程、線程、協程區別?
		答:
	  	1:進程:
				進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。
				每一個進程都有本身的獨立內存空間,不一樣進程經過進程間通訊來通訊。
				因爲進程比較重量,佔據獨立的內存,因此上下文進程間的切換開銷(棧、寄存器、虛擬內存、文件句柄等)比較大,但相對比較穩定安全。

	  	2:線程
				線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程本身基本上不擁有系統資源,
				只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),可是它可與同屬一個進程的其餘的線程共享進程所擁有的所有資源。
				線程間通訊主要經過共享內存,上下文切換很快,資源開銷較少,但相比進程不夠穩定容易丟失數據。

	  	3:協程
				協程是一種用戶態的輕量級線程,協程的調度徹底由用戶控制。協程擁有本身的寄存器上下文和棧。
				協程調度切換時,將寄存器上下文和棧保存到其餘地方,在切回來的時候,恢復先前保存的寄存器上下文和棧,
				直接操做棧則基本沒有內核切換的開銷,能夠不加鎖的訪問全局變量,因此上下文的切換很是快。
			區別:
				1:進程多與線程比較
					線程是指進程內的一個執行單元,也是進程內的可調度實體。線程與進程的區別:
					1) 地址空間:線程是進程內的一個執行單元,進程內至少有一個線程,它們共享進程的地址空間,而進程有本身獨立的地址空間
					2) 資源擁有:進程是資源分配和擁有的單位,同一個進程內的線程共享進程的資源
					3) 線程是處理器調度的基本單位,但進程不是
					4) 兩者都可併發執行

					5) 每一個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口,可是線程不可以獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制

	  	2:協程多與線程進行比較
					1) 一個線程能夠多個協程,一個進程也能夠單獨擁有多個協程,這樣python中則能使用多核CPU。
					2) 線程進程都是同步機制,而協程則是異步
					3) 協程能保留上一次調用時的狀態,每次過程重入時,就至關於進入上一次調用的狀態

	 

			進程和線程、協程在python中的使用:
			  1:多進程通常使用multiprocessing庫,來利用多核CPU,主要是用在CPU密集型的程序上,
				   固然生產者消費者這種也可使用。多進程的優點就是一個子進程崩潰並不會影響其餘子進程和主進程的運行,
				   但缺點就是不能一次性啓動太多進程,會嚴重影響系統的資源調度,特別是CPU使用率和負載。
				   使用多進程能夠查看文章《python 多進程使用總結》。注:python2的進程池在類中的使用會有問題,須要把類函數定義成全局函數。

			  2:多線程通常是使用threading庫,完成一些IO密集型併發操做。多線程的優點是切換快,資源消耗低,
				   但一個線程掛掉則會影響到全部線程,因此不夠穩定。現實中使用線程池的場景會比較多。

			  3:協程通常是使用gevent庫,固然這個庫用起來比較麻煩,因此使用的並非不少。
				   相反,協程在tornado的運用就多得多了,使用協程讓tornado作到單線程異步,聽說還能解決C10K的問題。因此協程使用的地方最多的是在web應用上。

				IO密集型通常使用多線程或者多進程,CPU密集型通常使用多進程,強調非阻塞異步併發的通常都是使用協程,
				固然有時候也是須要多進程線程池結合的,或者是其餘組合方式。
		
26. GIL鎖
	答:GIL鎖,全局解釋器鎖。python中之因此有GIL鎖的存在,在同一時間只能運行一個線程,線程運行在進程裏面,共享進程的內存地址,
		有共享就意味着競爭,那個線程拿到GIL鎖就優先執行,遇到阻塞或執行完畢釋放掉鎖,其餘線程搶到鎖,繼續執行。
			
27. 進程如何進程共享?
		答:進程之間的有數據隔離的,要想實現數據共享經過Manager來實現。
			IPC(進程間的三種數據共享)
			Queue隊列:先進先出。
			pipe管道:管道也是先進先出,可是不自動加鎖。管道加鎖,實現生產者消費者模型。
			Manage共享數據:共享數據也沒有加鎖的功能。

28:線程與線程怎樣作數據隔離?
		答:線程運行在進程裏,共享進程的內存地址,數據也是共享的。
			線程與線程之間數據共享,
			要數據隔離的話用本地線程。
			本地線程:保證每一個線程都有一份本身的數據,在操做時不會影響別人。
			即便是多線程也是數據隔離的。
				   
29:什麼是生產者消費者模型?
	答:生產者消費者模型經過一個容器來解決他們之間的強耦合問題,他們之間不彼此通訊。
		而是經過阻塞隊列進行通訊。生產者只負責生產數據,不用等消費者,生產完直接扔給阻塞隊列,
		消費不找生產者要數據,從阻塞隊列中拿數據。
		隊列至關一個緩存去,平衡了生產者消費者的處理能力。
		使用生產者消費者模型能解決大多數的併發問題			

30:異步非阻塞?
	答:
		例如,對於一個聊天室來講,由於有多個鏈接須要同時被處理,因此阻塞或同步的方法是不合適的,
			 這就像買票只開了一個窗口,佷多人排隊等同樣。那麼咱們解決這個問題的方法
			 主要有三種方法:forking、threading、異步I/O。
			Forking和threading的方法很是簡單,經過使用SocketServer服務類的min-in類就能夠實現。
			forking只適用於類Unix平臺;threading須要注意內存共享的問題。
			異步I/O若是底層的方法來實現是有點困難的。
			要簡單點,咱們能夠考慮使用標準庫中的框架或Twisted(Twisted是一個很是強大的異步網絡編程的框架)。
				
31:併發的本質?
	答:切換加保存狀態。併發只是咱們感受是同時運行的,實際上是在多個任務之間來回切換,切的時候保存狀態。
		切的話遇到IO阻塞的時候才切。

32:問題:IO多路複用?
		答:IO多路複用就是,單個進程能夠同時監聽多個網絡鏈接IO,IO指的是輸入輸出,一部分指的是文件操做,還有一部分網絡傳輸操做,例如:Socket就是其中之一。
			 多路複用指的是一種機制,同時使用多個IO。例如同時監聽多個文件句柄(Socket對象一旦傳送或者接收對象),一旦文件句柄出現變化就會馬上感知到。
			 I/O多路是用於:提高效率,單個進程能夠同時監聽多個網絡鏈接IO
			 1:IO多路複用的實現?
				select-----------------select模塊實現多路複用,使同一個端口同時接收多個連接
				poll-------------------epoll.poll 是一個實例方法,用於等待 IO 事件並返回一個已就緒 IO 事件的列表,
				epoll------------------select.epoll 是一個類方法,返回一個 epoll 對象,這裏的參數能夠爲 -1 或 一個正數,
								   只是 epoll 內部結構優化使用的參數,通常使用默認便可


---------------------------------------------------------Linux操做系統知識------------------------------------------------------------------------------------


1.常見的Linux發行版本都有什麼?你最擅長哪個?它的官網網站是什麼?說明你擅長哪一塊?
	答:
		常見的Linux發現版本有Redhat、Centos、Debian、Ubuntu、Suse
		最擅長Redhat和Centos
		Redhat官網:www.redhat.com
		Centos官網:www.centos.org
		我最擅長Linux基本命令操做及相關服務搭建

2.Linux開機啓動流程詳細步驟是什麼?系統安裝完,忘記密碼如何破解?
	答:
		開機步驟
		a:首先是bios加電自檢、初始化,這個過程會檢測相關硬件(cpu、內存、顯卡、硬盤等)而後讀取一個啓動順序,以硬盤爲例,會讀取硬盤中的MBR。
		b:加載內核讀取/boot裏邊的配置文件。
		c:啓動初始化進程,開始運行/sbin/init
		d:讀取/etc/inittab肯定運行級別
		e:根據/etc/rc.d/rcN.d加載開機啓動程序,rcN.d都是連接文件,都指向/etc/rc.d/init.d再運行/etc/rc.d/rc.local
		f:用戶登陸(3種方式ssh、命令行、圖形化)
		g:進入loginshell,以命令行爲例,首先讀取/etc/profile這個全局配置文件而後再針對當前用戶讀取家目錄中的 ~/.bash_profile和~/.bash_login和~/.profile
		h:最後一步就是打開non-loginshell
		   進入圖形化後手動新建一個終端,但這個shell不讀取/etc/profile

3:忘記密碼
	a: 重啓系統,在GRUB界面,選取忘記密碼的系統,按e鍵進入編輯模式
	b:項Kernel.....按e鍵進行編輯
	c:在編輯界面rhgbquiet後加空格,而後輸入"single"或"1"回車
	d:按b啓動進入單用戶模式
	f:進入系統後passwd回車輸入新密碼(若是有selinux,先暫時關閉setenforce0)

3.企業中Linux服務器系統分區標準是什麼?(硬盤爲300G,內存16G)
	答:
		/boot 200M
		/swap 16G
		/70G
		/data 剩下的所有空間

4.某一天忽然發現Linux系統文件只讀,該怎麼辦呢?完整操做步驟。
	答:首先把系統關機,而後以光盤啓動進入救援模式(linuxrescue)執行"fsck.ext3-y/dev/sda2"(假如只讀的分區類型爲ext3,分區爲/dev/sda2)

5.安裝一臺系統使用DVD光盤安裝,如何安裝50臺Linux系統如何安裝呢?思考一下。
	答:
		a:能夠多用幾張DVD一臺一臺的安裝。
		b:能夠用Kickstart批量安裝(客戶端從網絡啓動)

6.用虛擬機安裝了一臺Linux系統,忽然想克隆一臺服務器,克隆後發現沒法上網,如何解決?
	答:
		a:編輯網卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,將HWADDR和MAC地址這兩行刪除。
		b:修改文件/etc/udev/rules.d/70-persistent-net.rules,刪除以前eth0所在的行,將下一行eth1修改成eth0
		c:reboot

7.Linux網卡配置文件路徑是什麼?要使服務器上外網,必須知足的條件有哪些?須要配置什麼?
	答:
		網卡配置文件路徑:/etc/sysconfig/network-scripts/ifcfg-eth*(*表明數字)
		要上外網須要:可以連接internet的網線(或無線)、有網卡
		須要配置:IP、netmask、gateway、dns(自動或手動都ok,服務器通常自動)

8.通常可使用什麼軟件遠程linux服務器?經過什麼上傳文件和下載文件?
	答:
		遠程鏈接linux的軟件:xshell、SecureCRT、putty、vnc(圖形化)上傳和下載文件:lrzsz、sftp

9./mnt目錄主要用於什麼?/root目錄跟root用戶有什麼關係?/根目錄與/boot目錄有什麼聯繫?
	答:
		/mnt通常用於掛載外接設備
		/root是一個目錄,是root用戶的家目錄
		/boot目錄是/目錄下的一個子目錄

10.某一天誤操做,執行了rm-rf*,會有哪些狀況發生?請舉例。
	答:  
		a:若是當前目錄爲"/tmp",那麼這個目錄下的東西會所有刪除(默認不包含隱藏文件)
		b:若是當前目錄爲"/",那麼系統上的數據將會丟失,且沒法啓動,系統崩潰(謹慎使用這個命令)

		
------------------------------------------------------Linux命令及文件操做-------------------------------------------------------------------------------------


1.在/tmp/目錄下建立test.txt文件,內容爲:Hello,World!,用一個命令寫出來。
	答:echo "Hello,World!" > /tmp/test.txt

2.給test.txt文件除全部者以外增長執行權限,最終以數字寫出文件的權限。
	答:655默認是644,能夠經過"chmod 655 /tmp/test.txt"

3.用vi命令編輯test.txt,如何跳轉到末行,首行,行首、行末,如何在光標行下一行插入

   如何複製5行,刪除10行,查找jingfeng的字符、把jingfeng替換爲jfedu.net
	答:
	末行:G
	首行:gg
	行首:^(Shift+6)
	行尾:$(Shift+4)
	光標下插入一行:o
	複製5行:5yy
	刪除10行:10dd
	替換::%s/jingfeng/jfedu.net/g

4.查找linux系統下以txt結尾,30天沒有修改的文件大小大於20K同時具備執行權限的文件並備份到/data/backup/目錄下。
	答:find / -name *txt -mtime +30 -type f -size +20k -perma= x -exec cp {} /data/backup/\;

5.當前test.txt所屬的用戶爲root,組爲abc,請將test.txt使擁有者爲abc,組爲root,寫出命令。
	答:chown abc:root test.txt

6.如何修改Linux啓動級別爲字符模式並永久生效,如何臨時、永久關閉selinux及防火牆,請分別寫出操做方法。
	答:
		更改字符模式:修改/etc/inittab一行爲id:3:initdefault:
		臨時關閉selinnuxsetenforce0
		臨時關閉防火牆iptables-F
		永久關閉selinux修改/etc/selinux/config一行爲SELINUX=permissive
		永久關閉防火牆 iptables -F; /etc/init.d/iptablessave

7.每次開機在/tmp目錄下建立一個當天的日期文件夾(提示:當前日期表示的方法爲:`date+%Y%m%d`)
	答:echo "mkdir/tmp/ `date+%Y%m%d`" >> /etc/rc.d/rc.local

8.如何查看文件內容,命令有哪些?查看文件第1行到3行,查看文件最後一行。
	答:
		查看文件內容:vim、cat、head、tail
		查看第1到行:head -3 file
		查看最後一行:tail -1 file

9.查看linux服務器IP的命令,同時只顯示包含ip所在的行打印出來。
	答:
		以eth0爲例
		只打印所在的行:ifconfig eth0 | grep "inetaddr:"
		只打印ip:ifconfig eth0 | grep "inetaddr:" | awk -F: '{print$2}' | awk -F ' ' '{print$1}'
		http://blog.51cto.com/hujiangtao/1940375

10.將普通用戶test加入root組的命令是?
	答:usermod -G root test		
										   
		
---------------------------------------------------------------------進階--------------------------------------------------------------------------------------
		
1:簡述raid0 raid1 raid5 三種工做模式的工做原理及特色?
	RAID,能夠把硬盤整合成一個大磁盤,還能夠在大磁盤上再分區,放數據
	還有一個大功能,多塊盤放在一塊兒能夠有冗餘(備份)
	RAID整合方式有不少,經常使用的:0 1 5 10
	RAID 0,能夠是一塊盤和N個盤組合
	其優勢讀寫快,是RAID中最好的
	缺點:沒有冗餘,一塊壞了數據就全沒有了
	RAID 1,只能2塊盤,盤的大小能夠不同,以小的爲準
	10G+10G只有10G,另外一個作備份。它有100%的冗餘,缺點:浪費資源,成本高
	RAID 5 ,3塊盤,容量計算10*(n-1),損失一塊盤

	特色,讀寫性能通常,讀還好一點,寫很差
		冗餘從好到壞:RAID1 RAID10 RAID 5 RAID0
		性能從好到壞:RAID0 RAID10 RAID5 RAID1
		成本從低到高:RAID0 RAID5 RAID1 RAID10

		單臺服務器:很重要盤很少,系統盤,RAID1
		數據庫服務器:主庫:RAID10 從庫 RAID5\RAID0(爲了維護成本,RAID10)
		WEB服務器,若是沒有太多的數據的話,RAID5,RAID0(單盤)
		有多臺,監控、應用服務器,RAID0 RAID5
		咱們會根據數據的存儲和訪問的需求,去匹配對應的RAID級別

2:LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
	LVS: 是基於四層的轉發
	HAproxy: 是基於四層和七層的轉發,是專業的代理服務器
	Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,能夠作七層的轉發

	區別: LVS因爲是基於四層的轉發因此只能作端口的轉發
	而基於URL的、基於目錄的這種轉發LVS就作不了

	工做選擇:

	HAproxy和Nginx因爲能夠作七層的轉發,因此URL和目錄的轉發均可以作
	在很大併發量的時候咱們就要選擇LVS,像中小型公司的話併發量沒那麼大
	選擇HAproxy或者Nginx足已,因爲HAproxy由是專業的代理服務器
	配置簡單,因此中小型企業推薦使用HAproxy

3:Squid、Varinsh和Nginx有什麼區別,工做中你怎麼選擇?
	Squid、Varinsh和Nginx都是代理服務器
	什麼是代理服務器:
		能當替用戶去訪問公網,而且能把訪問到的數據緩存到服務器本地,等用戶下次再訪問相同的資
		源的時候,代理服務器直接從本地迴應給用戶,當本地沒有的時候,我代替你去訪問公網,我接
		收你的請求,我先在我自已的本地緩存找,若是我本地緩存有,我直接從我本地的緩存裏回覆你
		若是我在我本地沒有找到你要訪問的緩存的數據,那麼代理服務器就會代替你去訪問公網
	區別:
		1)Nginx原本是反向代理/web服務器,用了插件能夠作作這個副業

		  可是自己不支持特性挺多,只能緩存靜態文件
		2)從這些功能上。varnish和squid是專業的cache服務,而nginx這些是第三方模塊完成
		3)varnish自己的技術上優點要高於squid,它採用了可視化頁面緩存技術

		在內存的利用上,Varnish比Squid具備優點,性能要比Squid高。
		還有強大的經過Varnish管理端口,可使用正則表達式快速、批量地清除部分緩存
		它是內存緩存,速度一流,可是內存緩存也限制了其容量,緩存頁面和圖片通常是挺好的
		4)squid的優點在於完整的龐大的cache技術資料,和不少的應用生產環境

	工做中選擇:
		要作cache服務的話,咱們確定是要選擇專業的cache服務,優先選擇squid或者varnish。

4:Tomcat和Resin有什麼區別,工做中你怎麼選擇?
	區別:Tomcat用戶數多,可參考文檔多,Resin用戶數少,可考慮文檔少
	最主要區別則是Tomcat是標準的java容器,不過性能方面比resin的要差一些
	但穩定性和java程序的兼容性,應該是比resin的要好
	工做中選擇:如今大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩定和程序的兼容

5:什麼是中間件?什麼是jdk? 
	中間件介紹:
	中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源
	中間件位於客戶機/ 服務器的操做系統之上,管理計算機資源和網絡通信
	是鏈接兩個獨立應用程序或獨立系統的軟件。相鏈接的系統,即便它們具備不一樣的接口

	但經過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞
	經過中間件,應用程序能夠工做於多平臺或OS環境。

	jdk:jdk是Java的開發工具包
	它是一種用於構建在 Java 平臺上發佈的應用程序、applet 和組件的開發環境

6:講述一下Tomcat800五、800九、8080三個端口的含義?
	8005==》 關閉時使用
	8009==》 爲AJP端口,即容器使用,如Apache能經過AJP協議訪問Tomcat的8009端口
	8080==》 通常應用使用

7:什麼叫CDN?
	即內容分發網絡
	其目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到
	最接近用戶的網絡邊緣,使用戶可就近取得所需的內容,提升用戶訪問網站的速度
	
8:什麼叫網站灰度發佈?
	灰度發佈是指在黑與白之間,可以平滑過渡的一種發佈方式
	AB test就是一種灰度發佈方式,讓一部用戶繼續用A,一部分用戶開始用B
	若是用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把全部用戶都遷移到B上面 來
	灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠發現、調整問題,以保證其影響度

9:簡述DNS進行域名解析的過程?
	用戶要訪問www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,若是也沒有的話,
	就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,
	一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,
	二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,
	而後發給請求的服務器,保存一份以後,再發給客戶端

10:RabbitMQ是什麼東西?
	RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程當中保存消息的容器
	消息中間件再將消息從它的源中到它的目標中標時充當中間人的做用
	隊列的主要目的是提供路由並保證消息的傳遞;若是發送消息時接收者不可用
	消息隊列不會保留消息,直到能夠成功地傳遞爲止,固然,消息隊列保存消息也是有期限地

11:講一下Keepalived的工做原理?
	在一個虛擬路由器中,只有做爲MASTER的VRRP路由器會一直髮送VRRP通告信息,
	BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息)
	多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是很是快速的(<1s),以保證服務的連續性
	因爲安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息

12:講述一下LVS三種模式的工做過程?
	LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)

13:NAT模式(VS-NAT)
	原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址
		併發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包原IP地址改成本身的IP
		將目的地址改成客戶端IP地址便可期間,不管是進來的流量,仍是出去的流量,都必須通過負載均衡器

	優勢:集羣中的物理服務器可使用任何支持TCP/IP操做系統,只有負載均衡器須要一個合法的IP地址
	缺點:擴展性有限。當服務器節點(普通PC服務器)增加過多時,負載均衡器將成爲整個系統的瓶頸
		  由於全部的請求包和應答包的流向都通過負載均衡器。當服務器節點過多時
			大量的數據包都交匯在負載均衡器那,速度就會變慢!

14:IP隧道模式(VS-TUN)
	原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包一般很大
	那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給RS
	RS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不須要再通過
	負載均衡器。注意,因爲RS須要對負載均衡器發過來的數據包進行還原,因此說必須支持
	IPTUNNEL協議,因此,在RS的內核中,必須編譯支持IPTUNNEL這個選項
	優勢:負載均衡器只負責將請求包分發給後端節點服務器,而RS將應答包直接發給用戶
		  因此,減小了負載均衡器的大量數據流動,負載均衡器再也不是系統的瓶頸,就能處理很巨大的請求量
		 這種方式,一臺負載均衡器可以爲不少RS進行分發。並且跑在公網上就能進行不一樣地域的分發。

	缺點:隧道模式的RS節點須要合法IP,這種方式須要全部的服務器支持」IP Tunneling」
	(IP Encapsulation)協議,服務器可能只侷限在部分Linux系統上

15:直接路由模式(VS-DR)

	原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應
		  全部RS對自己這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求所有定向給DR
	      而DR收到數據包後根據調度算法,找出對應的RS,把目的MAC地址改成RS的MAC(由於IP一致)
	      並將請求分發給這臺RS這時RS收到這個數據包,處理完成以後,因爲IP一致,能夠直接將數據返給客戶
		  則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端
		  因爲負載均衡器要對二層包頭進行改換,因此負載均衡器和RS之間必須在一個廣播域
		  也能夠簡單的理解爲在同一臺交換機上
	優勢:和TUN(隧道模式)同樣,負載均衡器也只是分發請求,應答包經過單獨的路由方法返回給客戶端
		  與VS-TUN相比,VS-DR這種實現方式不須要隧道結構,所以可使用大多數操做系統作爲物理服務器。
		  
	缺點:(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段上。

16:mysql的innodb如何定位鎖問題,mysql如何減小主從複製延遲?
	mysql的innodb如何定位鎖問題:
	在使用 show engine innodb status檢查引擎狀態時,發現了死鎖問題
	在5.5中,information_schema 庫中增長了三個關於鎖的表(MEMORY引擎)
	innodb_trx ## 當前運行的全部事務
	innodb_locks ## 當前出現的鎖
	innodb_lock_waits ## 鎖等待的對應關係
	mysql如何減小主從複製延遲:
	若是延遲比較大,就先確認如下幾個因素:
	從庫硬件比主庫差,致使複製延遲
	主從複製單線程,若是主庫寫併發太大,來不及傳送到從庫
	就會致使延遲。更高版本的mysql能夠支持多線程複製
	慢SQL語句過多
	網絡延遲
	master負載
	主庫讀寫壓力大,致使複製延遲,架構的前端要加buffer及緩存層

	slave負載
	通常的作法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器
	只做爲備份用,不進行其餘任何操做.另外, 2個能夠減小延遲的參數:
	–slave-net-timeout=seconds 單位爲秒 默認設置爲 3600秒

	#參數含義:當slave從主數據庫讀取log數據失敗後,等待多久從新創建鏈接並獲取數據
	–master-connect-retry=seconds 單位爲秒 默認設置爲 60秒

	#參數含義:當從新創建主從鏈接時,若是鏈接創建失敗,間隔多久後重試
	一般配置以上2個參數能夠減小網絡問題致使的主從數據同步延遲

	MySQL數據庫主從同步延遲解決方案
	最簡單的減小slave同步延時的方案就是在架構上作優化,儘可能讓主庫的DDL快速執行

	還有就是主庫是寫,對數據安全性較高,好比sync_binlog=1,innodb_flush_log_at_trx_commit
	= 1 之類的設置,而slave則不須要這麼高的數據安全,徹底能夠講sync_binlog設置爲0或者關閉binlog

	innodb_flushlog也能夠設置爲0來提升sql的執行效率。另外就是使用比主庫更好的硬件設備做爲slave

17:如何重置mysql root密碼?

	一:在已知MYSQL數據庫的ROOT用戶密碼的狀況下,修改密碼的方法:
		1:在SHELL環境下,使用mysqladmin命令設置:
			mysqladmin –u root –p password 「新密碼」   回車後要求輸入舊密碼
		
		2:在mysql>環境中,使用update命令,直接更新mysql庫user表的數據:
			Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
			flush   privileges;
			注意:mysql語句要以分號」;」結束	
		3:在mysql>環境中,使用grant命令,修改root用戶的受權權限。
			grant  all  on  *.*  to   root@’localhost’  identified  by  ‘新密碼’;
			
	2、 如查忘記了mysql數據庫的ROOT用戶的密碼,又如何作呢?方法以下:

		1:關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加爲系統服務)

		2:使用mysqld_safe腳本以安全模式(不加載受權表)啓動mysqld 服務
			/usr/local/mysql/bin/mysqld_safe  --skip-grant-table  &
		3:使用空密碼的root用戶登陸數據庫,從新設置ROOT用戶的密碼
		  #mysql  -u   root
		   Mysql> Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
		   Mysql> flush   privileges;
		   
18:lvs/nginx/haproxy優缺點
	Nginx的優勢是:
		1:工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構
			它的正則規則比HAProxy更爲強大和靈活,這也是它目前普遍流行的主要緣由之一
			Nginx單憑這點可利用的場合就遠多於LVS了。

		2:Nginx對網絡穩定性的依賴很是小,理論上能ping通就就能進行負載功能,這個也是它的優點之一
			相反LVS對網絡穩定性依賴比較大,這點本人深有體會;

		3:Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來
			LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。

		4:能夠承擔高負載壓力且穩定,在硬件不差的狀況下通常能支撐幾萬次的併發量,負載度比LVS相對小些。

		5:Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,
		 而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測。好比用戶正在上傳一個文件,
		 而處理該上傳的節點恰好在上傳過程當中出現故障,Nginx會把上傳切到另外一臺服務器從新處理,而LVS就直接斷掉了
		 若是是上傳一個很大的文件或者很重要的文件的話,用戶可能會所以而不滿。

		6:Nginx不只僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器
			LNMP也是近幾年很是流行的web架構,在高流量的環境中穩定性也很好。
		7:Nginx如今做爲Web反向加速緩存愈來愈成熟了,速度比傳統的Squid服務器更快,可考慮用其做爲反向代理加速器

		8:Nginx可做爲中層反向代理使用,這一層面Nginx基本上無對手,惟一能夠對比Nginx的就只有lighttpd了
			不過lighttpd目前尚未作到Nginx徹底的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍
		9:Nginx也可做爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區很是活躍,第三方模塊也不少

	Nginx的缺點是:
		1:Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點
		2:對後端服務器的健康檢查,只支持經過端口來檢測,不支持經過url來檢測
			不支持Session的直接保持,但能經過ip_hash來解決
			LVS:使用Linux內核集羣實現一個高性能、高可用的負載均衡服務器
			它具備很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

19:mysql數據備份工具
	ysqldump工具
	mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump
	支持基於innodb的熱備份,可是因爲是邏輯備份,因此速度不是很快,適合備份數據比較小的場景
	Mysqldump徹底備份+二進制日誌能夠實現基於時間點的恢復。
	
	基於LVM快照備份
		在物理備份中,有基於文件系統的物理備份(LVM的快照),也能夠直接用tar之類的命令對整個數據庫目錄
		進行打包備份,可是這些只能進行泠備份,不一樣的存儲引擎備份的也不同,myisam自動備份到表級別
		而innodb不開啓獨立表空間的話只能備份整個數據庫。

	tar包備份
		percona提供的xtrabackup工具
		支持innodb的物理熱備份,支持徹底備份,增量備份,並且速度很是快,支持innodb存儲引發的數據在不一樣
		數據庫之間遷移,支持複製模式下的從機備份恢復備份恢復,爲了讓xtrabackup支持更多的功能擴展
		能夠設立獨立表空間,打開 innodb_file_per_table功能,啓用以後能夠支持單獨的表備份

20:keepalive的工做原理和如何作到健康檢查

	keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
	虛擬路由冗餘協議,能夠認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組

	這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內

	其餘機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了

	這時就須要根據VRRP的優先級來選舉一個backup當master。這樣就能夠保證路由器的高可用了

	keepalived主要有三個模塊,分別是core、check和vrrp。core模塊爲keepalived的核心,負責主進程的啓動、維護

	及全局配置文件的加載和解析。check負責健康檢查,包括常見的各類檢查方式,vrrp模塊是來實現VRRP協議的

	Keepalived健康檢查方式配置
	HTTP_GET|SSL_GET
	HTTP_GET | SSL_GET
	{
	url {
	path /# HTTP/SSL 檢查的url能夠是多個
	digest <STRING> # HTTP/SSL 檢查後的摘要信息用工具genhash生成
	status_code 200# HTTP/SSL 檢查返回的狀態碼
	}
	connect_port 80 # 鏈接端口
	bindto<IPADD>
	connect_timeout 3 # 鏈接超時時間
	nb_get_retry 3 # 重連次數
	delay_before_retry 2 #鏈接間隔時間
	}

21:統計ip訪問狀況,要求分析nginx訪問日誌,找出訪問頁面數量在前十位的ip
	cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10

22:使用tcpdump監聽主機爲192.168.1.1,tcp端口爲80的數據,同時將輸出結果保存輸出到tcpdump.log
	tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

23:如何將本地80 端口的請求轉發到8080 端口,當前主機IP 爲192.168.2.1
	iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

24:簡述raid0 raid1 raid5 三種工做模式的工做原理及特色

	RAID 0:帶區卷,連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,所以具備很高的數據傳輸率

	但它沒有數據冗餘,RAID 0 只是單純地提升性能,並無爲數據的可靠性提供保證

	並且其中的一個磁盤失效將影響到全部數據。所以,RAID 0 不能應用於數據安全性要求高的場合

	RAID 1:鏡像卷,它是經過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據

	不能提高寫數據效率。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,所以RAID1 能夠提升讀取性能

	RAID 1 是磁盤陣列中單位成本最高的,鏡像卷可用容量爲總容量的1/2,但提供了很高的數據安全性和可用性

	當一個磁盤失效時,系統能夠自動切換到鏡像磁盤上讀寫,而不須要重組失效的數據

	RAID5:至少由3塊硬盤組成,分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於全部磁盤上

	任何一個硬盤損壞,均可以根據其它硬盤上的校驗位來重建損壞的數據(最多容許1塊硬盤損壞)

	因此raid5能夠實現數據冗餘,確保數據的安全性,同時raid5也能夠提高數據的讀寫性能

25:你對如今運維工程師的理解和以及對其工做的認識
	運維工程師在公司當中責任重大,須要保證時刻爲公司及客戶提供最高、最快、最穩定、最安全的服務
	運維工程師的一個小小的失誤,頗有可能會對公司及客戶形成重大損失
	所以運維工程師的工做須要嚴謹及富有創新精神

26:實時抓取並顯示當前系統中tcp 80端口的網絡數據信息,請寫出完整操做命令
	tcpdump -nn tcp port 80

27:服務器開不了機怎麼解決一步步的排查

	A、形成服務器故障的緣由可能有如下幾點:
		wKioL1lMgrHDCEhfAABceoMZqwY330.png-wh_50
	B、如何排查服務器故障的處理步驟以下:
		wKioL1lMg2vhIvWKAAKkezGi_-4547.png-wh_50

28:Linux系統中病毒怎麼解決

	(1):最簡單有效的方法就是重裝系統
	(2):要查的話就是找到病毒文件而後刪除
	   中毒以後通常機器cpu、內存使用率會比較高
	   機器向外發包等異常狀況,排查方法簡單介紹下
	top 命令找到cpu使用率最高的進程
	通常病毒文件命名都比較亂,能夠用 ps aux 找到病毒文件位置
	rm -f 命令刪除病毒文件
	檢查計劃任務、開機啓動項和病毒文件目錄有無其餘能夠文件等

	3)因爲即便刪除病毒文件不排除有潛伏病毒,因此最好是把機器備份數據以後重裝一下

29:發現一個病毒文件你刪了他又自動建立怎麼解決

	公司的內網某臺linux服務器流量莫名其妙的劇增,用iftop查看有鏈接外網的狀況

	針對這種狀況通常重點查看netstat鏈接的外網ip和端口。

	用lsof -p pid能夠查看到具體是那些進程,哪些文件

	經查勘發現/root下有相關的配置conf.n hhe兩個可疑文件,rm -rf後不到一分鐘就自動生成了

	由此推斷是某個母進程產生的這些文件。因此找到母進程就是找到罪魁禍首

	查殺病毒最好斷掉外網訪問,還好是內網服務器,能夠經過內網訪問

	斷了內網,病毒就失去外聯的能力,殺掉它就容易的多

	怎麼找到呢,找了半天也沒有看到蛛絲馬跡,沒辦法只有ps axu一個個排查

	方法是查看能夠的用戶和和系統類似而又不是的冒牌貨,果真,看到了以下進程可疑

	看不到圖片就是/usr/bin/.sshd

	因而我殺掉全部.sshd相關的進程,而後直接刪掉.sshd這個可執行文件

	而後才刪掉了文章開頭提到的自動復活的文件

	總結一下,遇到這種問題,若是不是太嚴重,儘可能不要重裝系統

	通常就是先斷外網,而後利用iftop,ps,netstat,chattr,lsof,pstree這些工具順藤摸瓜

	通常都能找到元兇。可是若是遇到諸如此類的問題

	/boot/efi/EFI/redhat/grub.efi: Heuristics.Broken.Executable FOUND,我的以爲就要重裝系統了

30:說說TCP/IP的七層模型
	應用層 (Application):------------------------網絡服務與最終用戶的一個接口。協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
	表示層(Presentation Layer):----------------數據的表示、安全、壓縮。(在五層模型裏面已經合併到了應用層)格式有,JPEG、ASCll、DECOIC、加密格式等
	會話層(Session Layer):---------------------創建、管理、終止會話。應主機進程,指本地主機與遠程主機正在進行的會話
	傳輸層 (Transport):--------------------------定義傳輸數據的協議端口號,以及流控和差錯校驗。協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層
	網絡層 (Network):----------------------------進行邏輯地址尋址,實現不一樣網絡之間的路徑選擇。協議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
	數據鏈路層 (Link):---------------------------創建邏輯鏈接、進行硬件地址尋址、差錯校驗等功能。將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正
	物理層(Physical Layer):--------------------是計算機網絡OSI模型中最低的一層物理層規定:爲傳輸數據所須要的物理鏈路建立、維持、拆除

	而提供具備機械的,電子的,功能的和規範的特性
		簡單的說,物理層確保原始的數據可在各類物理媒體上傳輸。局域網與廣域網皆屬第一、2層
		物理層是OSI的第一層,它雖然處於最底層,倒是整個開放系統的基礎
		物理層爲設備之間的數據通訊提供傳輸媒體及互連設備,爲數據傳輸提供可靠的環境
		若是您想要用盡可能少的詞來記住這個第一層,那就是「信號和介質」

31:你經常使用的Nginx模塊,用來作什麼
	rewrite模塊,實現重寫功能
	access模塊:來源控制
	ssl模塊:安全加密
	ngx_http_gzip_module:網絡傳輸壓縮模塊
	ngx_http_proxy_module 模塊實現代理
	ngx_http_upstream_module模塊實現定義後端服務器列表
	ngx_cache_purge實現緩存清除功能

32:請列出你瞭解的web服務器負載架構
	Nginx
	Haproxy
	Keepalived
	LVS

33:查看http的併發請求數與其TCP鏈接狀態
	netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
	還有ulimit -n 查看linux系統打開最大的文件描述符,這裏默認1024
	不修改這裏web服務器修改再大也沒用,若要用就修改很幾個辦法,這裏說其中一個:
	修改/etc/security/limits.conf
	soft nofile 10240	
	hard nofile 10240
	重啓後生效

34:用tcpdump嗅探80端口的訪問看看誰最高
	tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20

35:寫一個腳本,實現判斷192.168.1.0/24網絡裏,當前在線的IP有哪些,能ping通則認爲在線
	#!/bin/bash
	for ip in seq 1 255
	do
	{
	ping -c 1 192.168.1.$ip > /dev/null 2>&1
	if [ $? -eq 0 ]; then
	echo 192.168.1.$ip UP
	else
	echo 192.168.1.$ip DOWN
	fi
	}&
	done
	wait

36:已知 apache 服務的訪問日誌按天記錄在服務器本地目錄/app/logs 下,因爲磁盤空間緊張

	如今要求只能保留最近 7 天的訪問日誌!請問如何解決? 請給出解決辦法或配置或處理命令

	建立文件腳本:

	#!/bin/bash

	for n in seq 14

	do

	date -s "11/0$n/14"

	touch accesswww(date +%F).log

	done

	解決方法:

	pwd/application/logs
	ll
	-rw-r--r--. 1 root root 0 Jan 1 00:00 access_www_2015-01-01.log
	-rw-r--r--. 1 root root 0 Jan 2 00:00 access_www_2015-01-02.log
	-rw-r--r--. 1 root root 0 Jan 3 00:00 access_www_2015-01-03.log
	-rw-r--r--. 1 root root 0 Jan 4 00:00 access_www_2015-01-04.log
	-rw-r--r--. 1 root root 0 Jan 5 00:00 access_www_2015-01-05.log
	-rw-r--r--. 1 root root 0 Jan 6 00:00 access_www_2015-01-06.log
	-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
	-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
	-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
	-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
	-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
	-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
	-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log

	-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log

	find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm –f
	##也可使用-exec rm -f {} \;進行刪除

	ll
	-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
	-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
	-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
	-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
	-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
	-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
	-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log

	-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log

37:如何優化 Linux系統(能夠不說太具體)?

	不用root,添加普通用戶,經過sudo受權管理
	更改默認的遠程鏈接SSH服務端口及禁止root用戶遠程鏈接
	定時自動更新服務器時間
	配置國內yum源
	關閉selinux及iptables(iptables工做場景若是有外網IP必定要打開,高併發除外)
	調整文件描述符的數量
	精簡開機啓動服務(crond rsyslog network sshd)
	內核參數優化(/etc/sysctl.conf)
	更改字符集,支持中文,但建議仍是用英文字符集,防止亂碼
	鎖定關鍵系統文件
	清空/etc/issue,去除系統及內核版本登陸前的屏幕顯示

38:請執行命令取出 linux 中 eth0 的 IP 地址(請用 cut,有能力者也可分別用 awk,sed 命令答)
	cut方法1:
		ifconfig eth0|sed -n '2p'|cut -d ":" -f2|cut -d " " -f1
		192.168.20.130
		
	awk方法2:
		ifconfig eth0|awk 'NR==2'|awk -F ":" '{print $2}'|awk '{print $1}'
		192.168.20.130

	awk多分隔符方法3:
		ifconfig eth0|awk 'NR==2'|awk -F "[: ]+" '{print $4}'
		192.168.20.130

	sed方法4:
		ifconfig eth0|sed -n '/inet addr/p'|sed -r 's#^.ddr:(.)Bc.*$#\1#g'
		192.168.20.130

39:請寫出下面 linux SecureCRT 命令行快捷鍵命令的功能?
	Ctrl + a —->光標移動到行首

	Ctrl + e —->光標移動到行尾

	Ctrl + c —->終止當前程序

	Ctrl + d —->若是光標前有字符則刪除,沒有則退出當前中斷

	Ctrl + l —->清屏

	Ctrl + u —->剪切光標之前的字符

	Ctrl + k —->剪切光標之後的字符

	Ctrl + y —->複製u/k的內容

	Ctrl + r —->查找最近用過的命令

	tab —->命令或路徑補全

	Ctrl+shift+c —->複製

	Ctrl+shift+v —->粘貼

40:天天晚上 12 點,打包站點目錄/var/www/html 備份到/data 目錄下(最好每次備份按時間生成不一樣的備份包)
	cat a.sh
	#/bin/bash
	cd /var/www/ && /bin/tar zcf /data/html-date +%m-%d%H.tar.gz html/
	crontab –e
	00 00 * /bin/sh /root/a.sh

	

		
		
		
		
		
		
		
		
		
		
相關文章
相關標籤/搜索