Linux 基礎學習大考覈

0.關於Linux的簡介php

Linux(好又免費)的組成部分:html

Linux 是一種計算機操做系統: 一系列能讓您與計算機進行交互操做並運行其它程序的程序。 
    操做系統由多種基礎程序構成。它們使計算機能夠與用戶進行交流並接受指令, 讀取數據或將其寫入硬盤、磁帶或打印機,控制內存的使用,以及運行其它軟件。
    操做系統最重要的組成部分是內核。
    在 GNU/Linux 系統中,Linux 就是內核組件。
    Linux不是一個操做系統,嚴格來說,Linux只是一個操做系統中的內核。 

內核是什麼?java

內核創建了計算機軟件與硬件之間通信的平臺,內核提供系統服務,好比文件管理、虛擬內存、設備I/O等。
  既然Linux只是一個內核。那麼咱們一般所說的Linux操做系統又是什麼?
    咱們一般所說的Linux,指 GNU/Linux ,即採用Linux內核的GNU操做系統。
    操做系統的實際名稱是GNU。 

什麼是GNU?node

GNU表明GNU’s Not Unix。能夠說是一個操做系統又能夠說是一種規範。
    GNU主要有gcc,bash等基礎軟件
    Linux內核有 Linux Kernel2.2 Linux Kernel2.4 Linux Kernel 2.6 
    DVD1.iso
    mini.iso 

Fedora,Centos和Redhat的區別mysql

CentOS是Redhat的另外一個分支,以Redhat發佈的源碼重建符合GPL許可協議的Linux系統,即把Redhat中取出商標Logo以及非自由軟件的部分後從新編譯。
    CentOS以及被Redhat收購,但任然開源,免費。
    Redhat有版權有售後,CentOS無版權無售後
    Fodora是Redhat的一個分支,支持GPL協議,能夠認爲是Redhat預發佈版本 

Linux安裝linux

    ISO鏡像安裝、光盤安裝
    64位運算速度快,能夠更好的發揮硬件的性能,提升業務效率 

Linux特色:ios

    硬件->內核->shell解析器->外圍程序
    Linux以高效和靈活著稱。
    Linux是自由軟件,開方源碼,自由修改。
    兼容Unix且能夠實現幾乎所有的Unix特性,多用戶,多線程,多任務,多CPU
    能夠自由傳播,免費、
    有很高的系統安全型,有大量的免費應用程序和大型數據庫平臺(Oracle+Mysql) 

1.只查詢當前目錄的一級目錄 nginx

  ls -l | grep "^d"             只顯示目錄
         ==>ls -ld */    只顯示目錄
         ==>ls -ld | grep /
         ==>ls -lF | awk '/^d/'
         ==>ls -lF | sed -n  '/^d/p'
         ==>ls -lF | grep "/$"  目錄後會加斜線,清晰的表示目錄
         ==>find ./ -maxdepth 1  -type d  ! -name "oldboy"  只顯示1級目錄文件且過濾自身

2.保留7天的日誌文件web

 for n in `seq 1 25` ; do date -s "2017/07/$n" ; touch access_web_`(date +%F)`.log;     done; 
    find . -name "*.log" -mtime +7  | xargs rm –f  

3.文件顯示行號面試

    nl  h.txt
    vi  h.txt  ->set nu
    cat -n h.txt
    less -N h.txt (不能直接顯示全部,只能顯示一屏)
    grep -n "." h.txt1   ==> grep -n "$" h.txt  
    awk '{print NR,$0}' h.txt     

4.裝完系統後但願網絡文件共享NFS服務,僅在3級別以上開機自啓(chkconfig)

chkconfig --level 3456 nfs on
chkconfig nfs on(默認2345)   ->關閉2 chkconfig --level 2 nfs off  

5.文本內容是:    I am oldboy, my qq is 123213231 
  請過濾出 "oldboy"  "123213231"          

    awk '{print $3 "\n" $7}' h.txt 
    cut -d" " -f3,7 h.txt         
    cut -c 6-11,21- h.txt 

  請過濾出 "oldboy,123213231"     

    awk '{print $3 "," $7}' h.txt
    # 使用sed替逗號爲空格,而後再用上面的命令去作
    awk -F "[, ]" '{print $3, $7}' h.txt           
    grep -Eo "oldboy|123*" h.txt       

 6.向磁盤寫入信息,發現提示以下錯誤"No space on device",df -h 發現磁盤沒滿,請問什麼狀況多是inode被消耗盡了  

df -i 查看inode數量       
可能緣由就是還有服務在調用,不停的在寫入文件進去(進程訪問的時候,文件能夠被刪除)           
雖然此時文件已經被刪除,可是block沒有被刪除,還在佔用磁盤空間(重啓服務便可/etc/init.d/httpd reload 啓後會生成新的,因此原來的釋放)           
lsof | grep deleted  能夠查看被刪除的文件,可是沒有被link的內容     

7.1個100M(100000K)的磁盤分區,分別寫入1k的文件或者寫入1M的文件,能夠寫多少個?
 

Inode:存放文件屬性和文件指向
Block:存放文件的實際內容,通常多用4k
    一個文件至少佔用一個inode和一個block,默認分區時block大於inode
    在默認較大分區的生產環境下,inode的數據時充足的,block消耗的更快

    解答: 1K的文件寫入,根據inode數量大小

7. Linux跟Unix區別在於什麼?爲何服務器使用Linux多於Unix?

UNIX系統大可能是與硬件配套的,而Linux則可運行在多種硬件平臺上.
UNIX是商業軟件,而Linux是自由軟件,免費、公開源代碼的,linux免費
unix和linux都是操做系統的名稱.但unix這四個字母除了是操做系統名稱外,還做爲商標歸SCO全部.
Linux商業化的有RedHat Linux 、SuSe Linux、slakeware Linux、國內的紅旗等,還有Turbo Linux.
Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平臺的的SCO Unix/Unixware
在網絡管理能力和安全方面,
UNIX系統一直被用作高端應用或服務器系統,所以擁有一套完善的網絡管理機制和規則
Linux沿用了這些出色的規則,使網絡的可配置能力很強,爲系統管理提供了極大的靈活性。

8.軟硬鏈接的區別?(10條) 

1. ln 建立軟硬連接概念區別
2. ln 文件軟硬鏈接,inode區別,是否能夠跨系統,是否能夠對目錄建立鏈接
3. 刪除軟硬連接對源文件的影響

9.linux 系統文件的刪除原理    

i_nolid=0 && i_count=0  刪除   + 解析硬連接(內含inode的概念)
    Linux經過link的數量控制文件的刪除,只有當一個文件不存在任何link的時候,文件纔會被刪除。
    rm命令而言,就是減小磁盤引用計數i_nlink(文件到inode的連接數量)
    inode節點指向存儲數據的block,刪除文件並非清除inode和block。文件的硬連接爲0,引用計數爲0 才能刪除文件
    若是有新的數據存儲或者系統經過相似fsck命令作磁盤檢查的時候,被刪除的數據塊和目錄會被釋放,數據沒法找回
    文件刪除的條件: i_link = 0 && i_count =0           
        i_nlink  文件的硬連接數量,磁盤的引用計數器
         i_count 內存引用計數(一個文件被幾個程序調用,有一個程序使用i_count + 1 )
      靜態文件:沒有程序調用的文件

10.企業目錄軟鏈接的做用   

1.編譯軟件時,指定版本號(apache/apcahce-2.2.3),訪問時須要去掉版本號(apache/apache)
	能夠設置軟鏈接到編譯的路徑,全部程序都訪問軟鏈接文件
	當軟件升級高版本後,只需刪除鏈接文件後,從新鏈接到高版本的文件
2.企業代碼發佈的時候(PHP),須要全部的代碼傳到一個新的目錄或者站點目錄。
	發佈時,直接mv  也能夠重建軟鏈接到新的臨時目錄或者站點目錄
3.不方便文件的移動,還想在當前目錄訪問到,也能夠 ln -s

11.打印IP地址      

    ifconfig  eth0 | grep "inet addr" | sed -r 's#^.*dr:##g'|sed -r 's# B.*$##g'  
       ifconfig  eth0 | grep "inet addr" | sed -r 's#^.*dr:(.*)  Bc.*$#\1#g'
       ifconfig  eth0 | sed -nr '2s#^.*dr:(.*)  Bc.*$#\1#pg' 
       ifconfig  eth0 | sed -n '2p' | awk -F "[:B]" '{print $2}'
       ifconfig  eth0 | awk -F "[:B]" 'NR==3 {print $2}'
       ifconfig  eth0 | sed -n '2p' | cut -c 21-34
       ifconfig  eth0 | sed -n '/inet addr/p' | cut -c 21-34 
       ifconfig  eth0 | awk '/inet addr/' | cut -c 21-34 
       ifconfig  eth0 | awk -F '[: ]+' 'NR==2 {print $4} 
       ifconfig  eth0 | sed '/inet addr/'

12.文件目錄      

       /var/log/sercure       系統安全日誌
       /etc/sysctl.conf
       /etc/sysconfig/i18n
       /etc/sudoers
       /var/spool/cron/root
       /var/log/messages       系統日誌
       /etc/passwd 
       /etc/shadow
       /etc/group
       /etc/gshadow
       /etc/motd
       /etc/issue
       /etc/redhat-release
       /etc/inittab
       /etc/profile
       /etc/fstab              磁盤文件系統開機掛載文件
       /etc/rc.local
       /etc/resolv.conf
       /etc/network-script/ifcfg-eth0
       /etc/sysconfig
       /etc/hosts
       /var/spool/clientmqueue  郵件臨時目錄
       /proc/interrupts         查看中斷文件

12-1  文件解壓大全 

tar xf    *.tar
tar zxf   *.tar.gz
gunzip -d *.gz
tar jxf   *.bz2
gunzip    *.zip
unzip     *.zip

13.說出10個通配特殊字符(bash環境下執行,多用於命令行)以及含義     

       *    表明任意0到多個字符
       ?     任意一個字符      ls oldbo?.log
       ~    用戶家目錄
       -    上次路徑  
       ..    上一級目錄
       >>    追加輸出重定向
       !     取反
       >     輸出重定向
       <     輸入重定向
       .     當前目錄
       $   變量前面增長的內容
       ''  所見即所得
       ``  反引號,tab之上,2個``中間即命令,會先執行,等價於${}
       ""  會把變量解析  
       {}  中間位命令區塊組合或
       內容序列   touch {a,b,c}.log  touch log.{4..6}  echo {1..3} ==>1 2 3
       |     管道
       /   路徑分隔符 
       #   註釋符號
       ;      連續不一樣命令的分隔符
       ||  當前一個命令執行失敗 也會執行後面的命令行   二選一的  你去我就不去 你不去我就去
       &&  當前一個命令執行失敗 也不會執行後面的命令   echo "hello" && echo "world" -->hello world

       無引號:把內容輸出出來,可是可能不能將含有空格的字符串做爲一個總體區輸出
           若是內容中有命令,變量等,會先解析出結果,最後輸出最終內容
           若是字符串有空格等特殊字符則不能完整輸出,須要改加雙引號    

14.Linux的開機啓動流程 

1開機BIOS自檢   -->檢查CPU,硬盤信息等內容    
2.MBR引導(讀取磁盤的0磁道,0柱面,1扇面,前446字節) -->預啓動,肯定硬盤啓動    
3.grub引導菜單(/etc/grub.conf)-->肯定加載哪一個系統       
4.加載內核kernel    
5.啓動init進程(Linux第一個進程)  /sbin/init    
6.讀取inittab文件(/etc/inittab),設定運行級別,init進程執行rc.sysinit(設置主機名,網絡等信息)  -->(/etc/rc.d/rc.sysinit  + /etc/rc.d/rc3.d/*)    
7 啓動內核模塊,執行不一樣級別的腳本程序    
8.執行/etc/rc.d/rc.local    
9.執行/bin/login登陸程序,啓動mingetty(終端登陸進程),進入系統登錄界面
    http://oldboy.blog.51cto.com/2561410/791273/   

15.    如何取得/etc/hosts  文件的權限所對應的數字內容,例如 -rw-r--r--爲644  

 stat -c %a /etc/hosts    --> -c==format  %a 輸出二進制
     stat /etc/hosts | sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'
    stat /etc/hosts | sed -n '4p' | awk -F "[0/]" '{print $2}'
    stat /etc/hosts | sed -n '/Access: (/p'  | awk -F "[0/]" '{print $2}'
    stat /etc/hosts | awk '/Access: \(/'  | awk -F "[0/]" '{print $2}'
    stat /etc/hosts | awk -F "[0/]" 'NR == 4 {print $2}' 
    stat /etc/hosts | awk -F "[0/]" '{ if(NR == 4) print $2}'
    stat /etc/hosts | sed -n '4p' | cut -d "/" -f1 | cut -d "0" -f2   (-d表示切割符,-f表示第幾列)
    stat /etc/hosts | head -4 | tail -1 | cut -d "/" -f1 | cut -d "0" -f2   (-d表示切割符,-f表示第幾列)
    ll   /etc/hosts | tr rwx- 4210| awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
    ll   /etc/hosts | cut -c 2-10 | tr rwx- 4210 |awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
總結:head.tail,sed,awk,grep 定位到單行   -->慣用取行命令
      cut,awk  設置分隔符取出須要的內容  -->慣用取列命令
      能夠用 sed -n '/***/p' ==> sed  '/^$/d' h.txt 過濾信息 
            ==> awk '/***/'                           過濾信息

如何查看當前的Linux服務器的運行級別?

#  命令能夠用來查看當前的Linux服務器的運行級別。
# 方案一
who -r
# 方案二
runlevel

如何查看Linux的默認網關?

# 方案一
route -n
# 方案二
netstat -rn

如何在Linux上重建初始化內存盤鏡像文件?

在CentOS 5.X / RHEL 5.X中,能夠用mkinitrd命令來建立初始化內存盤文件
若是你想要給特定的內核版本建立初始化內存盤,你就用所需的內核名替換掉 ‘uname -r’
在CentOS 6.X / RHEL 6.X中,則用dracut命令來建立初始化內存盤文件

patch命令是什麼?如何使用?

答: patch命令就是用來將修改(或補丁)寫進文本文件裏。patch命令一般是接收diff的輸出並把文件的舊版本轉換爲新版本。舉個例子,Linux內核源代碼由百萬行代碼文件構成,因此不管什麼時候,任何代碼貢獻者貢獻出代碼,只需發送改動的部分而不是整個源代碼,而後接收者用patch命令將改動寫進原始的源代碼裏

如何從命令行查看域SPF記錄?

答: 咱們能夠用dig命令來查看域SPF記錄

如何識別Linux系統中指定文件(/etc/fstab)的關聯包?

# 使用rpm命令
rpm -qf /etc/fstab

Linux系統中的/proc文件系統有什麼用?

答: /proc文件系統是一個基於內存的文件系統,其維護着關於當前正在運行的內核狀態信息,其中包括CPU、內存、分區劃分、I/O地址、直接內存訪問通道和正在運行的進程。這個文件系統所表明的並非各類實際存儲信息的文件,它們指向的是內存裏的信息。/proc文件系統是由系統自動維護的

如何在/usr目錄下找出大小超過10MB的文件?

find /usr -size +10M

如何在/home目錄下找出120天以前被修改過的文件?

find /home -mtime +120

如何在/var目錄下找出90天以內未被訪問過的文件?

find /var ! -atime -90

如何在整個目錄樹下查找文件「core」,如發現則無需提示直接刪除它們?

答: find / -name core -exec rm {}

strings命令有什麼做用?

答: strings命令用來提取和顯示非文本文件中的文本字符串。(LCTT 譯註:當用來分析你係統上莫名其妙出現的二進制程序時,能夠從中找到可疑的文件訪問,對於追查入侵有用處)

tee 過濾器有什麼做用 ?

答: tee 過濾器用來向多個目標發送輸出內容。若是用於管道的話,它能夠將輸出複製一份到一個文件,並複製另一份到屏幕上(或一些其它程序)

export PS1 = 」$LOGNAME@hostname:$PWD: 這條命令是在作什麼?

答: 這條export命令會更改登陸提示符來顯示用戶名、本機名和當前工做目錄

ll | awk ‘{print $3,」owns」,$9}’ 這條命令是在作什麼?

答: 這條ll命令會顯示這些文件的文件名和它們的擁有者

Linux中的at命令有什麼用?

答: at命令用來安排一個程序在將來的作一次一次性執行。全部提交的任務都被放在 /var/spool/at 目錄下而且到了執行時間的時候經過atd守護進程來執行

linux中lspci命令的做用是什麼?

答: lspci命令用來顯示你的系統上PCI總線和附加設備的信息。指定-v,-vv或-vvv來獲取愈來愈詳細的輸出,加上-r參數的話,命令的輸出則會更具備易讀性

查看請求訪問量

頁面訪問排名前十的IP

cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10

頁面訪問排名前十的URL

cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10

查看最耗時的頁面

cat access.log | sort -k 2 -n -r | head 10

16. test用戶下執行 sudo su - omd ,請問輸入誰的密碼? 

  [test@oldboy ~] $ sudo su - omd       -->test用戶的密碼
      # 經過test用戶切換到omd,因此此時輸入的是test用戶的密碼

17. echo "hello"; echo "world"   -->但願輸出來 helloworld怎麼解決  

 echo -n "hello"; echo "world"
 echo $?   -->爲0表示執行沒有報錯

18. 但願輸出date日期爲 17-08-02 

date +%F  --> 2017-08-02
date +%y-%m-%d -->17-08-02  
date +%y-%m-%d\ %H-%M-%S -->17-08-02 21-16-14
date +%y-%m-%d\ %H:%M:%S -->17-08-02 21:16:14
date +%F\ %T   --> 2017-08-02 21:18:14
安裝時間打包:
    tar -czvf omd-`date +%F`.tar.gz  ./home/
    tar -czvf omd-$(date +%F).tar.gz ./home/
echo $(date +%F -d +3day)
--實現安裝周打包
date +%w    第3天   
tar -czvf system_$(date +%F).tar.gz /host

19.生產環境中,要求保留最近的7天的內容,何解?
  

1. 定時刪除7天以前的文件(必定要用-name -f -mtime 3個參數肯定好你的文件)
	find /var/log -type f -name "*.log" -mtime +7 | xargs rm -f   刪除7天前的
2. 按照周打包文件
	tar -czvf system_$(date +%w).tar.gz ./home/

20.root用戶切換到omd後,執行ifconfig後顯示命令不存在,何解?

  這個是由於omd用戶的系統環境變量PATH路徑問題致使,但在只在CentOs5中有,由於此命令在/sbin,再也不全局變量中
  解決1:
        帶全路徑執行   /sbin/ifconfit eth0
  解決2:-->臨時
        將ifconfig的環境變量添加到PATH路徑中   export PATH=$PATH:$HOME/bin:/sbin
  解決3: -->永久
        omd用戶下編輯vi .bash_profile ,修改以下後保存
            PATH=$PATH:$HOME/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
        source .bash_profile

20-1. 自動刪除n天前日誌

刪除文件命令
find /var/log/ -mtime +30 -type f -name '*.log' -exec rm -f {} \;
find /var/log/ -mtime +30 -type f -name '*.log' |xargs rm -f ;

21. 如何把文件中的空行去掉:
 

grep -v "^$" h.txt -->標準
grep "." h.txt     -->不標準
sed  '/^$/d' h.txt
awk '/^[^$]/' h.txt 


22.查找命令:
      

快速查找ifconfig的全路徑,請給出命令
which   --> 重PATH路徑查找     which ifocnfig
whereis --> -b 查找二進制文件  whereis -b ifconfig
find     --> find / -type f -name "ifconfig"
locate  --> locate ifconfig | head -l  locate是從一個數據庫(須要提早updatedb更新數據庫)中查找-->通常不用的

23. 開關機命令
     

關機 
	關機以前使用  sync;sync;sync;將緩存中的數據寫入磁盤,避免形成數據丟失
	***shutdown -h now    shutdown -h 1(1分鐘後)     -->生產環境
	init 0    -->切換到運行級別0
	***halt      -->當即中止系統,須要人工關閉電源   -->生產環境
	poweroff  -->中止系統,關閉電源

   重啓命令
       reboot
       shutdown -r now 
       shutdown -r +1    1分鐘後重啓
       init  6
   
   註銷:
       logout
       exit
       ctrl + d    -->經常使用 

24. 說出10個linux正則表達式

 .
 *
 .*
{n,m} 
[] 
[^abc] 
\b 
\w 
\d 
^
$ 
? 
+ 
() 
| 
^$ 
\ 

25. 說出Linux的默認目錄以及目錄對應權限,如何控制默認權限
         

文件    644  umask 022  666 - 022 644 (umask遇奇數位 + 1 )
目錄    755  umaks 022  777 - 022 755 

26. 如何Linux修改文件以及目錄權限
   

1.chmod 755 h.txt 
2.chmod u=rx,g=rx,o=wx h.txt

27. 如何普通用戶執行某個特殊命令的使用?
 

  a.sudo
  b.suid 
  c.chmod 

28. Linux的特殊權限suid的做用以及應用場景
 

  suid: 普通用戶執行某個命令的時候得到了這個二進制命令/程序對應的用戶的權限  omd得到root用戶的rwx,s用4表示
    應用場景:全部普通用戶須要處理的工做,可是很危險,又但願得到root的特殊命令來本身執行
              passwd ping 受權uid

29. 描述對於文件和目錄,rwx-分別是什麼權限做用

區別root和普通用戶不一樣的權限
    文件:
        r:查看內容 cat 
        w:修改文件內容  echo >>  vi(須要r配合) 
        x:執行文件 須要wr配合
        -:沒有權限
    目錄:
        r:ls 顯示出來
        w:rm 建立文件,目錄
        x:cd 須要wr配合
        -:沒有權限

30. 描述一下三次握手和四次揮手

三次握手創建鏈接

    1)客戶端發送 SYN 消息,其中包含服務器的端口和客戶端的初始序列號(ISN)到服務器(活動打開)。
    2)服務器會發送回SYN和ACK(其中包括的客戶端的 ISN + 1)。
    3)客戶端發送一個 ACK,(其中包括的服務器的 ISN + 1)。 

四次揮手關閉鏈接

    TCP的鏈接是全雙工(能夠同時發送和接收)鏈接,所以在關閉鏈接的時候,必須關閉傳和送兩個方向上的鏈接。客戶機給服務器一個FIN爲1的TCP報文,而後服務器返回給客戶端一個確認ACK報文,而且發送一個FIN報文,當客戶機回覆ACK報文後(四次握手),鏈接就結束了。
    1)客戶端發送一個FIN(活動收盤)。這是一個如今半關閉鏈接。客戶端不能再將數據發送,但仍然可以從服務器接收數據。收到此 FIN 服務器進入被動關閉狀態。
    2)服務器發送一個ACK(這時客戶端 FIN 序列 + 1)
    3)服務器發送其自身FIN。
    4)客戶端發送一個ACK(這是服務器的 FIN 序列 + 1)。收到此 ACK 服務器關閉鏈接。

30-1 描述/dev/null和/dev/zero的區別

    1./dev/null:表示 的是一個黑洞,一般用於丟棄不須要的數據輸出, 或者用於輸入流的空文件
        1.1 將無用的輸出流寫入到黑洞丟棄。
            curl -Iwww.baidu.com 2>/dev/null | head -l  錯誤信息定位到黑洞
        1.2 清空文件      
            cat /dev/null > /home/omd/h.txt
        1.3 在書寫定時任務總,規範的寫法就是將全部定時任務腳本結尾加上>/dev/null 2>&1,讓全部的輸出流(包括錯誤的和正確的)都定向到空設備丟棄。
            00 01 * * * /bin/sh/server/scripts/mysqlbak.sh >/dev/null 2>&1
    2./dev/zero:當咱們使用或者讀取他的時候,她是會提供無限接二連三的空的數據流
        2.1覆蓋其餘的文件信息
        2.2產生指定大小的空文件,如交換文件,模擬虛擬文件系統    

31.程序和進程的區別:
  

 程序:靜止的汽車
 進程:運動中的汽車    -->運行的程序叫進程

32.關於crond的問答:
   

omd用戶編輯內容:     crontab -u omd -e   
查看omd用戶編輯內容:crontab -u omd -l
    ==> cat /var/spool/cron/omd 
問:顯示omd用戶沒有權限執行修改命令,爲什麼還能修改:
[root@localhost cron]# ll /var/spool/cron/omd 
   -rw-------. 1 root root 2 Aug  5 21:25 /var/spool/cron/omd
答:由於crontab命令的權限是 -rws  能夠執行root用戶的權限
   [root@localhost cron]# which crontab
   /usr/bin/crontab
[root@localhost cron]# ll /usr/bin/crontab
   -rwsr-xr-x. 1 root root 47520 Mar  4  2011 /usr/bin/crontab
問:怎麼可讓omd用戶不執行crontab命令呢?
答:1.取消/usr/bin/crontab 文件的s權限
    2.vim /etc/cron.deny   

33.郵件隊列有哪些?怎麼清空?
   

crond裏面頂一樓不少定時任務,每執行一次,就會發送一個郵件給管理員,文件會佔用系統的inode資源,致使服務器報錯,能夠定時刪除,或者vi /etc/crontab 將‘MAILTO=root’改寫爲MAILTO="" 或 crontab -e 第一行添加MAILTO=""
/var/spool/clientqueue/       -->  centOs5
/var/spool/postfix/maildrop/  -->  centOs6
find /var/spool/clientqueue -type f | xargs rm -f  -->刪除

34.每隔2小時,打包/home/omd文件到/tmp ? 定時任務    $(date +%Y%H:%M:%S)
     

 vim tar.sh 
cd /home && tar -xfz /tmp/omd_$(date +%F_%H:%M:%S).tar.gz 
/bin/sh /home/omd/tar.sh
crontab -e 
    #tar  /home/omd to /tmp for backup
    0 */2 * * * /bin/sh /home/omd/tar.sh >/dev/null 2>&1 
	01.每隔2小時  0 */2
	02.打包到上級目錄打包
	03.測試命令正確後粘貼到crontab  
	04.定向的空設備,不要屏幕輸出,能夠寫入log文件  
	05.寫腳本用來執行任務,腳本路徑要規範
	06.直接寫入crontab -e 裏面注意特殊字符的轉義

35.爲何只要一添加用戶,就會從/etc/skel下面拷貝.bash*的文件呢? 

 由於在/etc/default/useradd文件中寫了默認從這個文件拷貝文件

36.批量建立10個用戶stu01-stu10,而且隨記設置8個密碼
     

1.Linux中也有能夠實現批量添加用戶而且設置密碼的命令(newusers   chpasswd)
2.思路以下:  -->待完善
    2.1 00 建立
        seq -w 10  --> 00 01 02 03 04 05 06 07 08 09 10 
            ==>echo {00..10} --> 00 01 02 03 04 05 06 07 08 09 10 
    2.2 隨記密碼生成  
        echo $RANDOM      -->5位
        echo $RANDOM|md5sum|cut -c 1-8  ->8位
        pass=$((RANDOM + 10000000));     -->生成8爲密碼
    2.3 建立用戶
        echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=$((RANDOM + 10000000));echo "$pass"|passwd --stdin \1;echo -e "\1 \t `echo "$pass"`" >> /home/omd/h.txt#g'|bash
        ->分解一下
                echo stu{01..10}   -->打印stu01到stu10 默認是空格顯示
                tr " " "\n"        -->空格換成換行
                sed -r 's#(.*)#useradd \1; #g'   -->顯示useradd stu01 
                    pass=$((RANDOM + 10000000));     -->生成8爲密碼
                    echo "$pass"|passwd --stdin \1;  -->交互式寫入用戶密碼
                    echo -e "\1 \t `echo "$passwd"`" -->stu01 密碼
                sed -r 's#(.*)#useradd stu01 -p $pass  #g'  
                echo -e "stu01 密碼"  >> /home/omd/h.txt 
    2.4 批量刪除
            echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#userdel -r \1#g' |bash
3.shell編程
    for stu in stu{00.10}
       do
           pass=$(echo $RANDOM|md5sum|cut -c 1-8)
           useradd $stu && echo "$pass"|passwd --stdin $stu
       done; 

37.怎麼能夠阻止一個用戶登陸?
   

1.確保刪除一個文件以前,先進行備份,管好你的回車鍵,除非你確保沒問題
2.比刪除更好的是註釋掉這個文件
3.刪除用戶,能夠#也可使用/bin/nologin
4.pawd -l omd   -->鎖定帳戶
5.設置文件過時
    chage -E "2017/08/11" omd
            ==>useradd -e "2017/08/11" omd
            ==>usermod -e "2017/08/11" omd

38.企業生產環境用戶權限集中管理方案實例              
   

1.建立初級工程師3個,網絡工程師1個,中級工程師1個,經理1個
    for user in chuji{01..03} net01 senior01 manager01 
    > do
    >  useradd $user
    > echo "111111"|passwd --stdin $user
    > done;
2.建立5個開發人員,屬於phpers組
    groupadd -g 999 phpers
    for n in `seq 5`
    do 
        useradd -g phpers php0$n
    done
3.建立開發經理,中級phper
    for user in kaifaManager seniorPhper
    > do
    > useradd $user
    > echo "111111"|passwd --stdin $user
    > done
4.sudo的配置內容
    ########################Cmnd_Alias By FTL ###################################
    
    Cmnd_Alias CY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route 
    Cmnd_Alias GY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route, /sbin/iptables, /etc/init.d/network, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /bin/rpm, /usr/bin/updatedb, /usr/bin/yum, /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
    Cmnd_Alias CK_CMD_1=/usr/bin/tail, /bin/grep, /var/log/messages*
    Cmnd_Alias GK_CMD_1=/sbin/service, /sbin/chkconfig, /bin/tail, /var/log/*, /bin/grep, /bin/cat, /bin/ls, /bin/sh
    Cmnd_Alias GW_CMD_1= /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /sbin/iwconfig, /sbin/mii-tool, /bin/cat, /var/log/*
    
    ########################User Aliases By FTL ###################################
    
    User_Alias  CHUJI_YUNWEI_ADMINS=chuji01,chuji02,chuji03
    User_Alias  CHUJI_KAIFA_ADMINS=php01,php02,php03,php04,php05
    User_Alias  GAOJI_WANG_ADMINS=net01

    ########################Runas_Alias By FTL ###################################
    
    Runas_Alias  OP = root     -->將來切換到某個角色執行任務

    ########################Config By FTL ###################################

    senior01               ALL=(OP)      GY_CMD_1
    manager01           ALL=(ALL)   NOPASSWD:ALL
    kaifaManager        ALL=(ALL)   ALL, /usr/bin/passwd [A-Za-z], !/usr/bin/passwd root, !/usr/sbin/visudo,\
                                    !/usr/bin/vi *sudoer*,  !/usr/bin/sudo su -, !/bin/su
    seniorPhper            ALL=(OP)    GK_CMD_1
    CHUJI_YUNWEI_ADMINS ALL=(OP)    CY_CMD_1
    CHUJI_KAIFA_ADMINS  ALL=(OP)    CK_CMD_1
    GAOJI_WANG_ADMINS   ALL=(OP)    GW_CMD_1

        注意:別名要大寫   
             命令的路徑要全路徑  
             超過一行,用"\"換行  
             排除的命令必定在最後面寫
             kaifaManager 由於有ALL,因此能夠直接su - 切換root,可是 sudo su -切換不了

39.企業生產環境日誌審計解決方案                   

1.日誌審計:記錄全部系統以及相關用戶行爲的信息,而且能夠自動分析,處理,展現(文本形式)
2.思路以下:
    1.經過環境變量命令以及syslog服務進行所有日誌的審計         -->信息太大,不推薦
    2.sudo配合syslog服務,進行日誌審計                (信息較少,效果不錯,推薦使用)
    3.在bash解釋器程序中潛入一個監視器,讓全部被審計的系統用戶使用修改過的增長了監視器的特殊bash做爲程序解釋程序
    4.使用商業產品    -->堡壘機
3.項目;sudo日誌審計   -->專門對使用sudo命令的系統用戶記錄其執行的命令
  
  3.0.如下針對單機版本(完整版):
    1.安裝/查看sudo命令,syslog服務
        rpm -qa | egrep "sudo|syslog"
    2.配置/etc/sudoers
        增長配置,表示sudo的log記錄到/var/log/sudo.log文件中  
            echo "Defaults  logfile=/var/log/sudo.log"  >> /etc/sudoers
            echo "local2.debug   /var/log/sudo.log" >> /etc/rsyslog.conf     -->其實能夠不用的
                --> 再rsyslog.conf的文件指定一個local2的設備,執行級別是debug,把執行的命令,經過rsyslog寫入sudo.log

        查看添加的配置信息
            tail -1 /etc/sudoers
            tail -l /etc/rsyslog.conf 
        echo使用時要檢查語法
            visudo -c        -->針對/etc/sudoers
        重啓rsyslog服務
            service rsyslog restart
                ==> /etc/init.d/rsyslog restart
        查看日誌文件:
            ll /var/log/sudo.log
                權限600 root.root

      3.1 日誌集中管理   ---集羣環境(部分參考版)
            1.思路  
                1.rsync + inotify或者定時任務+rsync,推送日誌管理到服務器上, 10.185.163.162_20170813_sudo.log
                2.rsync服務處理
                    echo "10.185.163.162 logserver" >> /etc/hosts
                    日誌服務器地址:
                        echo "*.info  @logserver" >> /etc/rsyslog.conf     -->適合全部的日誌推走
                3.日誌收集  scribe
                            flume對nginx採集
                            storm
                            logstash

            2.配置日誌服務器記錄日誌
                1.配置logserver服務器
                    echo "10.185.163.162  logserver" >> /etc/hosts
                    tail -1 /etc/hosts
                    ping logserver
                2.配置客戶端syslog文件
                    echo "*.info    @logserver" >> /etc/rsyslog.conf    將日誌推送到服務器
                    tail -1 /etc/syslog.conf
                    /etc/init.d/rsyslog restart


40.已知一個端口爲333,如何查看端口對應的服務名
  

 1. lsof -i :333
 2. netstat -lntup|grep 333
         -n:number  數字形式顯示
         -t: tcp協議
         -u: udp協議
         -l: list
         -p: print 進程
 附加:若是給你一個進程名,如何查看端口:
     netstat -lntpu|grep sshd

41.如何查看一個已經被刪除但任然佔用進程的文件名?
  lsof |grep deleted
    groff     5734      root    0r      REG              253,0    53449     534312 /tmp/man.HZYQ8B (deleted)

42.網絡以及服務故障的檢查:

-->先肯定是我的問題仍是所有的問題
1.上不了網(局域網以及我的)
    0. 網卡壞了      
    a. ping www.baidu.com   -->icmp協議
        1.1不通則 ping 網關 -->不通則路由有問題
    b. traceroute www.baidu.com    -->測試路由之間是否通
    c. telnet www.baidu.com 22     -->測試服務器WEB有沒有開啓服務,以及防火層有沒有擋
        ==>nmap     www.baidu.com  -p 22
        ==>nc  
    不通:端口沒開,或者不存在
         fw防火牆阻擋
         服務監聽的端口不在鏈接的IP上
    其餘: IP被佔用,IP衝突,其餘人是否能夠上網,大面積不能上網,檢查路由,交換機
    附:window的跟蹤路由
        tracert -d www.baidu.com
2.能上網,可是很慢(運維人員)
    同上abc
    服務器負載資源太高,服務器以及服務器的鏈接數過多
    服務器帶寬滿了,用戶帶寬  流量監控
    檢查是否是存儲服務器,NFS以及磁盤IO搞
    查看數據庫是否是負載高,IO搞,CPU搞
    服務器受攻擊

3.總結以上:
    1.先肯定是我的仍是所有
        a. ping www.baidu.com   -->icmp協議
              通:
                  不丟包: 正常
                  丟包:   服務器帶寬不穩定,過載
            不通:服務器掛了,交換機故障
        b. traceroute www.baidu.com    -->測試路由之間是否通
    
    2.機房業務是否OK
        c. telnet www.baidu.com 22     -->測試服務器WEB有沒有開啓服務,以及防火層有沒有擋
            ==>nmap     www.baidu.com  -p 22
    3.外部問題
        d.帶寬滿了
        f.服務器IO,CPU過載等
        g.代碼問題
    4.其餘問題
        客戶本身的問題,帶寬小,CPU處理慢等
    5.集羣架構(數百臺服務器)
        h.數據庫問題,登陸數據庫,優化數據庫等
        i.存儲服務器的問題等,IO以及NFS是否太高等

43.http協議(應用層)的工做原理
   

超文本傳輸協議(HTTP:Hypertext Transport Protocol)是萬維網應用層的協議。
        它經過兩個程序實現:一個是客戶端程序(各類瀏覽器),另外一個是服務器 (常稱Web服務器)。
        這兩個一般運行在不一樣的主機上,經過交換報文來完成網頁請求和響應。
一次HTTP操做稱爲一個事務,其工做過程可分爲四步:
    1)首先客戶機與服務器須要創建鏈接。只要單擊某個超級連接,HTTP的工做開始。        
2)創建鏈接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。        
3)服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。	
4)客戶端接收服務器所返回的信息經過瀏覽器顯示在用戶的顯示屏上,而後客戶機與服務器斷開鏈接。        若是在以上過程當中的某一步出現錯誤,那麼產生錯誤的信息將返回到客戶端,有顯示屏輸出。對於用戶來講,這些過程是由HTTP本身完成的,用戶只要用鼠標點擊,等待信息顯示就能夠了


44.dns的解析原理                                      -----畫圖解答
45.OSI的7層模型  
46.生產環境中磁盤的選型和應用案例             --

 磁盤接口類型:IDEA,SCSI,SAS(15000/m),SATA,SSD(除了SSD,都是串口),光纖
 IDEA:淘汰
 企業級SAS:    15000/分, 300G 600G 1T,    多用線上的服務器    -->首選
 企業級SATA:7200-10000/分  1T 2-4T 6T  經濟實惠,多用數據存儲,站點數據庫,線下備份等   -->HW 
 企業級SSD: 線上高併發,小容量業務
 思想: 根據/業務場景進行選擇,SSD + STAT(訪問頻率大的放SSD,訪問次數不高的放入SATA,始終把SSD放入高頻率用戶,冷熱數據能夠動態調動,從而兼顧性能,容量,成本)
	提醒: 不要用SATA用做磁盤作在線的高併發服務存儲數據和數據庫業務

41.磁盤工做的過程和原理
  

 磁盤工做的過程:
    磁盤工做的時候,磁盤會高速運動,當達到必定速度的時候,氣流很強,足夠將磁頭托起並保持微小的距離(距離越小,磁頭讀取數據的靈活性越高),磁頭會慢慢地由啓停區向外移動,磁頭讀取最外面的0磁道的數據(由0磁道檢測器進行引導)
        磁頭沿着直徑作徑向運動,盤片旋轉,轉一圈讀取一圈的數據。·不工做的時候回到啓停區。
        1.磁盤的讀寫是按照柱面爲單位進行的;從0盤面開始,讀取完數據後,讀取1盤面相同半徑的數據,以此類推,讀取半徑相同的磁盤的數據到結束後讀取另外一個半徑的數據
        2.不一樣磁頭之間的切換是電子切換,不一樣半徑直接的切換是機械的(依靠電機移動磁頭手臂)
    磁盤讀取數據的原理:電脈衝信號轉換爲電腦可識別的信息
            利用特定的磁粒子的極性來記錄數據。
            磁頭在讀取數據時,將磁裏自帶不一樣極性轉換成不一樣的電脈衝信號,再利用數據轉換器將原有的初始信號變成電腦可用的數據。
            寫與此相反
    磁盤讀寫數據的時候,應儘量的讓磁頭不動,這樣才能儘量多的讀取更多的數據

42.問172.16.22.38/27,求子網ID,廣播地址,主機數和主機可用數目

    答: 32-27=5,故主機爲有2的5次方 -2 = 30個(這串地址的最小和最大地址分別用做網絡地址(也叫網絡號)和廣播地址,不能分配給主機)
        子網掩碼連續27個1
        11111111 11111111 11111111 11100000  -> 子網DI爲255.255.255.224.0
        網絡位27個,172.16.22就不用看了,佔用了24個網絡位,還有3個網絡位,計算一下38的二進制00100110,咱們取前三位001;那就是如今這樣
        172.16.22.001xxxxx,若是咱們都改爲0就是網絡地址(網絡號),都改爲1就是廣播地址,計算一下,地址的範圍是32到63

4? 一臺服務器6塊600G磁盤,raid5後,總大小3T,此時沒法安裝操做系統,解決辦法是作raid5後,不要重啓裝系統,而是raid界面,繼續分1個小的虛擬磁盤vd 200G,用這個200G的虛擬磁盤安裝系統,安裝完成後再把剩餘的2.8T分區經過parted

43.企業不一樣業務場景的服務器你是如何區分的?(備用)
 

    普通: /boot 100  /dev 1.5(8-16G)   /  
    db:    /boot 100  /dev 1.5(8-16G)   date 50G  / 
    門戶:  /boot 100  /dev 1.5(8-16G)   / 50-100 剩餘的留着備用

44.說出5個以上的磁盤管理的命令*(分區,格式化,掛載)
  

    fdisk -l -cu
    parted
    mkfs
    mount -a -t -o 
    umount 
    tune2fs -c -1
    dump2fs(塊組,可用的inode) 詳細信息
    df -hi
    du -sh 
    partprobe

45.RAID 0 1 5 10原理,冗餘,性能的區別?
   

Raid有」廉價磁盤冗餘陣列」的意思,就是利用多塊廉價的硬盤組成磁盤組,讓
        數據分部儲存在這些硬盤裏面,從而達到讀取和寫入加速的目的;
        也能夠用做數據的冗餘,當某塊硬盤損毀後,其餘硬盤能夠經過冗餘數據計算出損壞磁盤的數據,這樣就提升了數據儲存的安全性。
        能夠提供較普通磁盤更高的速度、安全性,因此服務器在安裝時都會選擇建立RAID。
    建立方式:
        軟RAID(經過操做系統軟件來實現)
        硬RAID(使用硬件陣列卡)。
    爲何用RAID:
        提升數據安全性 
        提高數據讀寫性能 
        提供更大的單一邏輯磁盤數據容量存儲
    RAID-0 :striping(條帶模式)
        特色:在讀寫的時候能夠實現併發,因此相對其讀寫性能最好,每一個磁盤都保存了完整數據的一部分
              讀取也採用並行方式,磁盤數量越多,讀取和寫入速度越快。
              由於沒有冗餘,一個硬盤壞掉所有數據丟失
              至少兩塊硬盤才能組成Raid0陣列。 
              容量:全部硬盤之和。磁盤利用率爲100%
        生產應用場景 
            一、負載均衡集羣下面的多個相同RS節點服務器 
            二、分佈式文件存儲下面的主節點
            三、MySQL主從複製的多個slave服務器 
            四、對性能要求很高,對冗餘要求很低的相關業務
    RAID-1 :mirroring(鏡像卷)
        特色:
            至少須要兩塊硬盤
            raid大小等於兩個raid分區中最小的容量(最好將分區大小分爲同樣)
            數據有冗餘,在存儲時同時寫入兩塊硬盤,實現了數據備份; 
            磁盤利用率爲50%,即2塊100G的磁盤構成RAID1只能提供100G的可用空間。
    RAID-5
        特色:
            採用奇偶校驗,可靠性強
            磁盤校驗和被散列到不一樣的磁盤裏面,增長了讀寫速率。
            只有當兩塊磁盤同時丟失時,數據纔沒法恢復
            至少三塊硬盤而且硬盤大小應該相等才能組成Raid5陣列。
        容量:
            全部硬盤容量之和減去其中一塊硬盤的容量
                被減去的容量被分配到三塊硬盤的不一樣區域用來存放數據校驗信息。
    Raid10(Raid1+Raid0)
        特色:
            是如今比較經常使用的一種磁盤陣列級別,
            它的容錯好,讀寫數據效率較高,但經費相對也較高。
            備份和併發式存取數據,可靠性強。
            D一、D2組成一個陣列Raid1,其中D1是數據盤,D2是備份盤;
            D三、D4也組成一個Raid1,其中D3是數據盤,D4是備份盤;
            在這個基礎上將D一、D2做爲一個總體,將D三、D4也做爲一個總體
            這兩個總體之間再組成一個Raid0陣列。
            這樣不只僅讀取數據會很是快,併發寫入的速度也會隨着磁盤的增多而變快。
            至少四塊硬盤而且每塊硬盤大小應該相等才能組成Raid10陣列。
        容量:全部硬盤容量之和的一半(一半寫數據,一半用來備份數據)。
    總結:
        (從節點)RAID0 讀寫速度很快  沒有任何冗餘      MySQL Slave(數據庫的從庫,小弟),集羣的節點RS
        (監控,重要)RAID1 100%冗餘,鏡像 讀寫性能通常     成本高 單獨的,數據重要,且不能宕機的業務,監控,系統盤
        (正常業務)RAID5 具有必定性能和冗餘,能夠壞一塊盤,讀性能不錯 寫入性能不高 通常的業務均可以用
        (數據庫的主節點)RAID10 讀寫速度很快,100%冗餘 成本高 性能和冗餘要求很好的業務。數據庫主庫和存儲的主

46.fstab修改錯誤致使文件系統沒法啓動故障修復案例
   

維護、單用戶模式
    mount -o remount,rw  /     -->文件系統只讀的時候須要處理
    修改fstab

47.磁盤設備實戰

1.磁盤的外部,內部構造以及原理
2.機械磁盤的讀取數據的工做原理
3.什麼是磁道,扇區,柱面
4.什麼是文件系統,常見的文件系統
5.磁盤存儲的最小單位是?數據均爲10-100M的視頻文件,該如何配置
    文件儲存在硬盤上,硬盤的最小存儲單位叫作"扇區"(Sector)。
    每一個扇區儲存512字節(至關於0.5KB)。
6.一個硬盤最p多有多少分區?爲何?
7.一個100M大小的分區,1k的文件能夠寫入多少個,威懾麼?
8.如何查看操做系統以及內核的版本
    uname -r
    cat /etc/redhat-release
    uname -m
9.配置nfs須要啓動那些相關的服務
    服務器端:
        /etc/init.d/rpcbind
        /etc/init.d/nfs
    客戶端:
        /etc/init.d/rpcbind    -->掛載完成後能夠卸載
10.如何在客戶端查看當前nfs掛載的客戶端以及共享目錄有哪些
        showmount -e ip
11.NFS的侷限:
    有網絡要求
    耦合度高
    高併發下性能差
    文件是銘文的

12.配置NFS服務後,不重啓服務,如何使配置生效
    /etc/init.d/nfs reload ==> exportfs -tv
13.救援模式修復/etc/fstab ?    
14.root密碼忘記如何修改 ?
15.如何添加IP    
    基於別名配置:ifconfig eth0:ws 192.168.25.132/24 up     -->臨時生效,重啓失效
    基於輔助IP:  ip addr add 192.168.25.131/24 dev eth0    

48.全網服務器數據備份方案的cron+rsync            
   

1.針對公司重要的數據備份混亂情況和領導提出備份全網數據的解決方案
2.經過本地打包備份,而後rsync結合inotify應用將全網數據統一備份到一個固定的存儲服務器
    而後在存儲服務器上經過腳本檢查並報警管理員備份結果
3.按期將IDC機房的數據備份公司內部的服務器,防止天然災害致使數據丟失

49.網絡的面試題
    1.寫出下面端口對應的服務
     

grep -b "\b22\b"  /etc/services
    端口 21   ftp
    端口 22   ssh
    端口 25   SMTP  -->sendmail
    端口 3306 mysql
    端口 873  rsync
    端口 161  snmp  -->遠程管理設備
    端口 111  rpcbind
    端口 3389 window遠程桌面 
    端口 80   http
    端口 443  https
    端口 110  pop3
    端口 53   dns
    端口 514  syslog

 

    2.FTL R2288的6塊600G SAS盤做RAID5後,計劃安裝部署mysql提供讀取服務器,如何劃分分區安裝操做系統?
        用什麼命令來分區?
        分區後如何不啓服務就能生效?
 

0.若3T的內存安裝不了系統
1.RAID界面分出200G虛擬磁盤安裝系統,boot分區200G swap分區100G(內存大於16G 2倍,小於則1.5) /分區給剩餘data(用於數據存儲)
   安裝系統後用parted(先設置爲gpt後分區)進行分區
2.若是不是RAID5,則能夠先劃分2個RAID1進行安裝操做系統
3.NFS 的啓動沒有問題,可是爲何chkconfig|grep nfs 任然是關閉的呢?


        答:chkconfig是系統開機自啓動,與如今系統的狀態無關

    4.批量更名題,移除文件名中的fin字樣

# ll stu*
-rw-r--r--. 1 root root   0 Aug 25 22:53 stu_1_fin.jpg
-rw-r--r--. 1 root root   0 Aug 25 22:53 stu_2_fin.jpg
-rw-r--r--. 1 root root   0 Aug 25 22:53 stu_3_fin.jpg
0.touch stu_{1..3}_fin.jpg
1. rename 原字符  目標字符  文件
   rename "fin" "" *
2. for f in `ls *.fin.jpg`
    do
           mv $f `echo $f|sed 's#_fin##g'`
    done
3.ls *.jpg|awk -F '_fin' '{print "mv " $0 " " $1$2}'|bash
4.ls *.jpg|sed -r 's#(^.*)_fin.*$#mv & \1.jpg #g'|bash

50.把/etc/hello.sh 配置成開機自啓動的服務
   

1. 添加到rc.local
2. 添加到/etc/init.d下  增長chkconfig

51.查看apache進程命令
  

 prefork進程模式:
        ps -ef | grep httpd
 worker線程:
        pstree -a |grep httpd | wc -l

52.192.168.0.0/24 網段經過192.168.0.1網關連入172.16.1.0/ip段,請問路由如何添加
 

   route add -net 172.16.1.0 gw 192.168.0.1 netmask 255.255.255.0 

53.處理一下的文件內容,將域名取出並根據域名進行計數排序處理

    http://www.etiantian.com/index.html
    http://www.etiantian.com/1.html
    http://post.etiantian.com/index.html
    http://mp3.etiantian.com/index.html
    http://www.etiantian.com/3.html
    http://post.etiantian.com/2.html

54.使用expect交互式命令語言把文件從A服務器推送到B,C服務器,請寫出腳本。
   

已知root/HHH200@FTL 22端口

55.集羣環境防止木馬的方案:
   

主要是防止web,文件root.root  文件644 目錄755
分開服務器:
    上傳服務器:限制木馬訪問,只能post,不能get,而後數據存儲在Mysql服務器上
    動態服務器:只能跟數據庫進行讀寫(雙向),控制文件的解析
    圖片服務器:只能讀取圖片(單向)                
程序目錄: 目錄755 文件644,用戶root
上傳文件: 目錄755 文件644,用戶webserver

56.Linux下安裝軟件的方式

    1.源碼編譯安裝:靈活,本身作飯本身吃
    2.yum或rpm: 簡單,但不靈活,下飯店吃
        訪問量小的時候可用  
        追求方便
        服務器數量大
    3.結合編譯和yum的雙重優勢
        根據業務需求->自制rpm->放到yum倉庫
            自制rpm?
            放到yum倉庫?


57.Apache分析日誌
    1.分析全部Web服務器的訪問日誌,對IP地址段進行去重

awk '{print $1}' h.log|sort|uniq -c|sort -rn
awk '{++S[$1]} END {for (key in S) print S[key], key }' www-access_20170905_log |sort -rn -k1

58.清空日誌的方法: 

 1.echo  >/var/log/runlog.log
 2.>/var/log/runlog.log
 3.cat /dev/null >/var/log/runlog.log   -->查看黑洞並重定向到日誌文件

      59.高可用?
    60.Rsync Nfs Crond Ssh key 基礎命令 Apache Mysql Php Nginx Lvx+keepalive + Iptables +Cacti/流量監控 ?
    61.Linux 高可用(HA)集羣之keepalived詳解?        

http://freeloda.blog.51cto.com/2033581/1280962

keepalived是一個相似於layer3(網絡層), 4(傳輸層) & 7(應用層)交換機制的軟件 Keepalived使用的vrrp協議方式,虛擬路由冗餘協議 (Virtual Router Redundancy Protocol,簡稱VRRP); 做用:檢測服務器的狀態,若是有一臺web服務器宕機,或工做出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除同時使用其餘服務器代替該服務器的工做,當服務器工做正常後Keepalived自動將服務器加入到服務器羣中這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器。 Layer3:Keepalived使用Layer3的方式工做式時,Keepalived會按期向服務器羣中的服務器發送一個ICMP的數據包(既咱們平時用的Ping程序),若是發現某臺服務的IP地址沒有激活,Keepalived便報告這臺服務器失效,並將它從服務器羣中剔除,這種狀況的典型例子是某臺服務器被非法關機。Layer3的方式是以服務器的IP地址是否有效做爲服務器工做正常與否的標準。 Layer4:若是您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的狀態來決定服務器工做正常與否。如web server的服務端口通常是80,若是Keepalived檢測到80端口沒有啓動,則Keepalived將把這臺服務器從服務器羣中剔除。 Layer7:Layer7就是工做在具體的應用層了,比Layer3,Layer4要複雜一點,在網絡上佔用的帶寬也要大一些。Keepalived將根據用戶的設定檢查服務器程序的運行是否正常,若是與用戶的設定不相符,則Keepalived將把服務器從服務器羣中剔除。

 

    62.怎麼把本身寫腳本放在服務裏面,即便用service調用
        方案一:
       

#!/bin/bash
# chkconfig: - 90 10
# description: just a test
    echo "Hello,$1"
# mv test /etc/init.d/
# chmod +x /etc/init.d/test
# chkconfig --add test
# service test start
//能夠看到Hello,start表示成功

 

        方案二:
      

一、開機自啓(兩種方法)
     一、加入到rc.local系統配置文件
     二、將腳本作成服務形式(拷貝到/etc/init.d/)
2. 能夠經過init.d下的腳本控制其啓動
    說明腳本要支持start|stop|restart等參數,使用case配合函數進行控制
三、每5分鐘將系統進程信息發送至syslog
     提示:logger命令是syslogd提供的shell接口。經過調用該命令可達到效果
     每5分鐘自動發送系統進程信息:
   方法:一、腳本中加入sleep 300(秒爲單位)
         二、定時任務      

 

    63.如何執行秒級別的任務:
        

1.用while循環執行
	while true
		do
			uptime 
			usleep 1000000  ->usleep表示毫秒級別,1000000爲1秒
		done
	
    64.隨機數的6中方法
       
echo $RANDOM|
echo $RANDOM|md5sum|cut -c 1-6
echo $((RANDOM+100000))
echo $(date +%t%N)
cat /proc/sys/kernel/random/uuid 

 

    65.判斷一個網絡裏面有哪些IP在線:
        方案一:
         

#!/bin/bash
     while true; do
       for I in {1..5};do
         ping -c 2 -w 2 192.168.3.$I &>/dev/null
         if [ $? -eq 0 ]; then
           echo -e "\033[32;40m 192.168.3.$I is UP.\033[0m"
         else
           echo -e "\033[31;40m 192.168.3.$I is Down.\033[0m"
         fi
           done
             break
     done
  
        方案二:
        
#!/bin/bash
    IP=1
    while [ $IP -le 5 ]; do
        ping -c 2 -w 2 192.168.3.$IP &>/dev/null
        STRING=$?
    #    if ping -w 2 -c 2 192.168.3.$IP &>/dev/null;then
         if [ $STRING -eq 0 ];then
           echo -e "\033[32;40m192.168.3.$IP is up.\033[0m"
        else
           echo -e "\033[31;40m192.168.3.$IP is down.\033[0m"
        fi
        let IP=$IP+1
    done
相關文章
相關標籤/搜索