配置named服務以前的 相關術語意思

putty: [p^ti]: 油灰, 膩子,像 clay 粘土同樣起 鏈接做用.
很是簡潔,只有500多kB, 不須要安裝,純綠色的,版本仍是0.x, Simon Tatham, 甚至沒有主界面,沒有菜單/工具欄什麼的, 僅僅只有一個建立鏈接的對話框, 鏈接後就只有一個方框了.
一般 沒有若是沒有什麼特殊緣由, 都是直接使用 這個 putty (油灰/膩子) 來鏈接的了.php


  1. 更深入地理解linux的安裝和目錄
    編譯安裝有點相似於win安裝到指定的目錄如d:\program files\fooSoft, 而dnf/yum安裝至關於win的默認的安裝到 c:\program files..
    編譯安裝的東西幾乎所有集中放到一個同一個地方; 而dnf安裝的東西是分散的 分別的放在各個默認的目錄中


一般安裝一個軟件的時候,按類別放置:
基礎架構的東西放在include, lib中
配置文件放在conf目錄, 少數有的放在etc中
服務的 管理 啓動 中止等放在 sbin中
而對於服務的工具類如調試, utils等放在bin中
軟件包的資源文件一般放在share中, 好比軟件的css,js, images, man, scripts, documents幫助文檔等等...
還有一個很重要的目錄: var, 一般是對於服務器軟件來講的, 就是一些服務器 向外提供的內容, 一些常常會變化的內容, 好比httpd的 /var/www目錄, dns的 /var/named目錄等. 一般各類服務器的常常變換的實體內容都集中放在/var目錄中
還有一些 輔助目錄, 如: log等.css

  1. dns的配置文件實際上只有兩個, 一個是主配置文件named.conf, 另外一個是區域數據文件.
    對於區域文件的命名, 一般用 .zone結尾,好比: file "localdomain.zone"; 或者: file "0.0.127.zone"html

  2. named.ca 中的ca是cache的意思, 是緩存的意思, 由於dns系統 支持暫存盤, 可是隻有 root根才能夠這樣命名.linux

  3. 動態dns系統是指 存在 主/從 master:slave dns-server的狀況下, 固然得要安裝其餘dns支持組件正則表達式

  4. 在dns中的IN, 指的是: IN = internet 資源類型.thinkphp

  5. 區域zone文件中的 allow-update {none;}; 表示的是是否 容許 客戶機/和當前dns服務器 自行更新本身的dns記錄.shell

  6. dns的運行命令和服務名稱叫named, 可是提供他的包名稱是bind. bind: Barkley internet named daemon. 這是用得最多的 一種dns服務器軟件(也還有其餘的dns服務器軟件包).
    一般要安裝的包有: bind, bind-utils ([i]或[ai] 是utility的縮寫,一些工具包性質的軟件), 還有 caching-nameserver數據庫

notepad中保存文件時光標會亂跳? 這是一個小bug? 解決方法是: 一種是取消"格式中的 自動換行", 第二種是: 打開文件時什麼都不要操做, 先ctrl-s保存一下,之後保存時就不會亂跑了express

  1. 爲何要告訴dns服務器主機的resolv.conf中的 域名服務器呢?
    就是要有一個最原始的"雞"來生蛋: 由於最開始的dns服務器的緩存是空的: 仔細看這篇文章: http://blog.csdn.net/bpingchang/article/details/38377053
若是您瞭解 DNS 的查詢模式﹐您會知道 DNS 服務器在查詢非本身管轄的 zone 的時候﹐首先會向 root 查詢下一級的 zone 在哪裏﹐而後逐級查詢下去。但問題是﹕當 named 剛啓動的時候﹐在 cache 裏面一片空白﹐它怎麼知道 root zone 的 servers 在哪裏呢﹖這不是一個矛盾嗎﹖因此﹐就必須靠這個檔案告訴 named 關於 root zone 的 servers 有哪些﹖以及在哪裏﹖ --- 明白了嗎﹖
  1. 終於知道這個A類型是什麼意思了: A= Address 地址正向解析類型 的意思, 而 反向解析區域的命名是: zone "0.0.127.in-addr.arpa" IN { ....} 這裏的 in-addr.arpa 表示的是 internet - address. 這個是固定的寫法, 直接添加在 反ip地址後面就好了.
    要知道in-addr.arpa到底是什麼意思? 看RFC的官方文檔說的:
    This address mapping domain is calledIN-ADDR.ARPA Within that domain are subdomains for each network, based on network number. 原來它是一個官方專門取的一個名字, 一個域的名字

named 的日誌查看: named -g
查看全部的服務信息: service --status-all
bind-utils 是bind-utilities for querying name servers編程

爲何named要用rndc來管理?

由於bind在設計的時候, 就是這樣設計的, 主要是爲了 dns不中斷解析(一般生產環境中的dns服務器很繁忙的), 能夠經過rndc( 讓你得逞) 來在線更新 named. 因此named服務在啓動時, 必須經過 rndc來管理啓動: ** bind的named服務在啓動的時候, 會去經過rndc 和named之間的 TCP的套接字(hmac md5證書)來鏈接rndc服務器. 若是找不到rndc服務及其配置文件(如: /etc/rndc.conf) ,就會報錯,雖然你看 named服務進程是 running, 可是dns解析會error! **

爲何要用 下載的方式 編譯安裝? 由於雖然用yum也能夠安裝 bind, 可是因爲它安裝的版本一般來講比較舊, 也可能會有一些 已知的安全 通知問題 因此 用在 官網下載較新版本的 bind包來編譯安裝 會更好? 可是 yum安裝 會自動解決 包的dependencies 問題和 包的更新update問題. 更省心...

  1. 若是用putty 登陸 無X界面,就要使用 wget 來下載bind-9.10.6: wget https://www.isc.org/downloads/file/bind-9-10-6/ 下載下來的名字就是bind-9-10-6, 要將這個文件更名爲: ...tar.gz
  2. will be updated: 是說低版本的包將要被升級, will be an update : 是說升級到哪一個版本的包
  3. 安裝包的時候, 會首先 "處理依賴" Processing Dependency", 而後進行 "Running transaction check" 交易檢查(交易檢查 就是 : 主要是檢查被依賴包的版本是否恰當會不會太低, 須要升級" 若是 transaction check error錯誤,多是版本衝突的緣由, 須要: 先卸載低版本,而後執行: yum update).

關於thinkphp的版本?

在新的版本中, 使用了應用分組.
之前是使用多個 應用程序, 平級的, 好比最多見的兩個獨立的應用程序, 前臺和後臺, Home和Admin.它們是平級的, 且目錄跟tp是在同一個地方.

而如今分組後, Home和Admin是做爲 一個大的/總的應用程序 App下的兩個應用分組,是兩個目錄. 而App跟ThinkPHP是平級的.

tp版本從3.0, 3.1, 3.2. 其中3.1和3.2 的修訂版最後都是3,即最大的版本: 3.1.3, 和3.2.3
3.1.2是 比較低的, 舊的版本, 而3.2.x是一個比較大的 重大的升級, 變化較大, 能夠認爲是 4.0的版本. 好比: 3.1中的庫核心目錄叫lib, 而在3.2中叫 Library, 3.1中尚未現成的index.php入口文件, 3.2中就已經給你寫了一個入口文件了. 並且在開發分組和獨立分組上也有了較大的差異.


一般對於 編譯安裝的軟件, 默認的是 放在 /usr/local 目錄中, 可是要注意的是, 放在local中的時候, 被安裝軟件的內容是按類別分別的/分散地 放在 /usr/local/bin, /usr/local/sbin /usr/local/lib, include ,share, etc等中的, 實際上, 仍是沒有按軟件名稱進行 集中放置的, 因此 一般應該設置 --prefix=/usr/local/soft_name, 這樣就會在soft_name下分別建立bin, sbin, lib, etc等進行集中放置該軟件的內容了.


雜項

  1. 在vim的正則表達式中, 要表示行號, 該用什麼?
    若是是在 normal模式下, 到行首和行尾是使用的 gg, G(shift + g). 而$ 則表示 到當前行的 末尾
    可是, 若是是在 command模式下, 即vim的正則搜索/替換/刪除的冒號模式下, 要表示第一行和最後一行則不是用 gg,和 G了 , 而是1, 和 $ (即, 這個$, 在不一樣的模式下, 表示不一樣的含義: 在normal下, 它是當前行的末尾, 而在editor模式下, 他表示的是 最後一行)
    一般, 在 vim冒號模式/編輯模式下, 正則模式下, 表示行號的方式有這麼幾種:
  • 用 1, 或者0 表示第一行,
  • 用 $ 表示最後一行, 注意不是用 G
  • 用點號. 表示 當前行, 這個就沒必要用set nu去查看行號了.
  • 用 + 或 - 表示相對行, 好比 .,.+8
  • 最重要的是, 無論是替換仍是 刪除命令, 前面的範圍部分, 以及命令部分, 均可以有 空格的, 並且空格的數量能夠隨便加, 可是 在正則表達式部分, 則要嚴格控制 空格的寫法. 由於在 非正則匹配部分, 空格只是起分割的做用, 無論多少, 而正則匹配部分則是有嚴格的實際意義的! 不能隨便加
    好比, 摘自網頁的:
如下命令將文中全部的字符串idiots替換成managers:
:1,$s/idiots/manages/g
一般咱們會在命令中使用%指代整個文件作爲替換範圍:
:%s/search/replace/g
如下命令指定只在第5至第15行間進行替換:
:5,15s/dog/cat/g
如下命令指定只在當前行至文件結尾間進行替換:
:.,$s/dog/cat/g
如下命令指定只在後續9行內進行替換:
:.,.+8s/dog/cat/g
**你還能夠將特定字符作爲替換範圍。好比,將SQL語句從FROM至分號部分中的全部等號(=)替換爲不等號(<>):**
:/FROM/,/;/s/=/<>/g

要注意理解正則匹配中, 要替換的內容, 指的是 你正則表達式僅僅匹配到的內容, 若是沒有匹配的部分, 是不會被替換的. 好比: . , $-1 s/^#\ //g 就是將當前行 到倒數第一行的內容 表達式中的正號 負號, 能夠看做是加減號, 也能夠看做是 相對 行號...好比: $-1, .+8, ...

tail +n的用法

  1. tail和head自己能夠直接帶文件名, 而不僅是對 管道過來的數據進行操做
  2. head 和 tail 都應該帶上 -n選項, 不然後面的數字會被看成是文件名 而報錯
  3. head和tail的 行數 均可以是 帶正負號 的數字, 其中正負號和 不帶符合的數字相同 時 遵循的規則是: 頭正尾負, 即 head -n 5 foo.txt 等同於 head -n +5 foo.txttail -n 10 foo.txt 等同於 tail -n -10 foo.txt
  4. 而若是後面的數字 是相反數的時候, 表明的含義略有不一樣: head -n -3 foo.txt表示的是 去掉 末尾的 3行文字 而 tail -n +5 foo.txt 表示的是 從開頭的 第5行開始(注意, 要包括這個第5行)直到末尾的行數所有顯示。
  5. 爲何會這樣呢? 由於head 表示的老是輸出 文件前面的部分(開頭的部分), 而 tail 表示的老是輸出 文件末尾的部分。

killall和 kil的區別

  1. 第一, killall是殺死這個命令程序的 全部 進程, 而kill指的是 只殺死指定pid 進程號的程序
  2. 第二, killall由於要殺死全部 同名的進程(或線程),因此,後面跟的是 程序的名稱; 而kill 後面就只能跟進程的id號pid。
    可是 他們都須要發送 -9 的中止信號.

dns中的術語?

dns中 soa是什麼意思: start of authority: 開始受權, 後面開始寫 區域定義
rndc是什麼: "讓你得逞", remote name deamon control, 是名字服務的遠程控制, named 服務, 必需要有rndc服務, 並且要rndc服務起來並由 rndc來管理它. named服務才能正常運行和解析
dig -t NS .是什麼意思 : 去挖掘 . 這個根域名服務器的記錄和信息, 當得到 控制檯輸出後,就能夠 重定向到named.ca文件
named.ca是什麼文件? 他表示 dns服務器的全部 的 根域名服務器的 信息. 當咱們本地的 生產性 域名服務器本地 沒有頂級 域名的信息時, 要把dns查詢請求發送給 根, 而後讓 根dns服務器去返回 其餘 下級(子級)域名服務器的信息. 那麼這個根域名服務器的信息就放在 named.ca中.
hint表示連接? 表示 named.ca這個文件, 只是一個連接, 其數據庫並無在本地機器上.
最重要的是: 全球的 根 dns服務器共有 13個, 那麼 named.ca這個文件 中, 應該包含有 這13個 服務器的 A (address ip) 記錄內容才行, 而不僅是 這13個根dns服務器的域名


dhcp的協議爲何叫bootp? shutdown和reboot的區別? tail -f的用法 -F

  1. 關機的命令有不少, 要了解他們的層次. 總的來講, 最終的實現都是交給 init ? 這個命令, 當? =0 的時候, init 0 就表示 關機, init 6 就表示重啓.
    可是, 規範的, 安全的關機命令, 之後都應該使用: shutdown, 由於shutdown 是一個安全的關機命令, 他會作一些處理善後工做, 好比: 會發送 通告/廣播消息給其餘 同時登陸到這臺機器的終端, 告訴他們機器即將關閉; 會指定 關機時間; 並且會 寫入 緩存(flush cache). 這樣 會避免程序內容和數據的丟失等.
    而 halt是直接關機, 不會 作這些善後工做;
    reboot是 重啓命令, 關機後 再重啓.
    相對應的, 實際上, shutdown都有 對應的選項 : 好比: shutdown -h = halt, shutdown -r = reboot.
    因此之後都用 shutown命令就行了. 並且 shutdown 有不少實用的選項:
    -h, -r, -c: cancel 表示取消先前發出的shutdown命令
    -k: 只是發出警告信息, 並不真的關機.
    他的 命令格式是: shutdown [options] TIME [memssage]

shutdown 若是沒有指明 message, 會默認的 報告: for maintenance. maintain的名詞, maintenance: during routine maintenance

注意: time參數是 必須的, 不然會報錯, 他要知道 何時關機? 有三種表示方法: 有意義的單詞 NOW; +m 表示多少分鐘後關機, m表示分鐘的數字; hh:mm指定關機的絕對時間.


  1. bootp分服務器端和客戶端, 服務器端的叫 bootps, 使用的是 67號端口的tcp/udp, 客戶端的叫bootpc 使用 68端口的tcp/udp
[root@localhost foo]# cat /etc/services | grep -nE 'boot'
71:bootps          67/tcp                          # BOOTP server
72:bootps          67/udp
73:bootpc          68/tcp          dhcpc           # BOOTP client
74:bootpc          68/udp          dhcpc

bootp 是比較老的分配協議, dhcp(注意就是dhcp後面沒有d) 是bootp的升級版. 有兩個優勢: bootp須要事先知道客戶端的mac地址, 而dhcp不須要; bootp分配地址後, 一般是靜態的地址, 而dhcp是動態可變化的.

  1. tail -f 是能夠 跟蹤 文件末尾的變化和新增內容 的, 其中 -f是follow的意思, 可是 當 被跟蹤文件 被移動或刪除的狀況下, -f可能會中止繼續輸出, 而這時候, 能夠用 -F 來一直跟蹤, 他能夠重建 被跟蹤文件...

    linux的shell 編程中, 凡是 循環語句, 無論是while 仍是用for, 其中的循環體, 都是放在 do ... done 之間的

    關於 shell中的 雙圓括號的運用 , 看這篇文章講透了: https://www.cnblogs.com/linuxprobe/p/5634208.html , 很好.

    雙圓括號, 是對 [, [[, test等的擴展. 能夠只 使用雙圓括號代替他們: features:
    雙括號中的運算徹底支持c語言的全部運算符號,好比 a++, a--, a>1?true: false, 其次, 雙括號中的全部變量引用都不須要加 $; 能夠擴展 四則運算\邏輯運算\結構運算if while for等; 可是要注意的是, 雙括號中的是表達式, 能夠是多個表達式, 之間用逗號分割, 可是要得到 雙括號的值, 好比你要 echo, 你要賦值, 則必須在雙括號前面加上 $


關於單中括號 和 雙中括號的區別: 參考: http://blog.csdn.net/good_habits/article/details/27708745

一個最大的區別是: 單中括號會進行 變量的擴展(若是是多個單詞的字符串, 會把它們看成多個單詞來看待, 這時候會產生錯誤), 因此像 name="Smith Jonh" ; if [ $name = "Smith Jonh" ]; echo ... 會報語法錯誤, 由於單中括號 會將 $name 擴展成 if [ Smith John = "Smith John" ], 從而認爲 Smith 是多餘的單詞 而報錯, 這時候, 使用單中括號, 應該將 變量用 雙引號括起來, 明確地告訴這是一個 完整的 字符串.
而使用 雙 中括號 則不會擴展, if [[ $name = "Smith John" ]] ... 則不會報錯...

linux的shell腳本 的語句和語句之間 須要分割. 有兩種分割方式, 一種是 用 分號, 另外一種是 用 回車符 兩種均可以.
另外: 一個大的原則是 : 凡是在結構語句中, 好比if, for, while前面的條件 語句(注意這些if while for 分句都是 一個語句, 一個判斷 語句! 它 跟後面的do語句, 之間都須要加 分號或回車進行分割.
而後就是 凡是shell中的全部結構體(if, while, for ,until等 ) 中的body部分, 都必須有 相似 C語言中的 大括號 進行括起來. shell是用 關鍵字 進行來 "括起來"來的, 好比: if 結構體中, 要用 then...else....fi來括起來, while和for等要用 do ...done 來括起來. 這樣的話, 就不會忘記寫then或do等關鍵字了.

關於echo的一個用法是: echo 自己會照原樣輸出 後面的內容, 無論你有沒有加 雙引號. 可是有一點: echo 遇到 $(()) 等之類的 計算表達式的時候, 會 先將 表達式的值計算出來而後再打印,好比:

[root@localhost foo]# echo b=$((a+3))
b=6

關於shell編程, 這一篇就夠了: http://blog.csdn.net/crazyhacking/article/details/10182563

就是關於 能夠用在if while for等語句中 表示條件判斷的情形

主要有三種條件判斷: 1. 是關於字符串的邏輯運算 2. 是關於 整數的邏輯運算, 3. 是關於文件的邏輯運算

  1. 關於字符串的邏輯運算有: =, !=, -n, -z, 若是要比較大小, 使用 反斜槓轉義後的 \>, 或 \< , 最重要的是字符串支持 單個字符串判斷, 好比: if [ "$name"], 可是 整數就不支持這種單個的邏輯運算
  2. 關於整數的邏輯運算, 要用 字符運算符, 如: -eq, -ne, -gt, -lt, -ge...
  3. 關於文件的邏輯運算, 包括: -f, -d, -r, -w, -x, -l, -s(文件大小非零)

而多個邏輯表達式 的 混合運算 能夠用 -a, -o, ! , 也能夠用對應的 &&, || ,! 可是 前者要放在一個 中括號內, 然後者要放在兩個 單獨的 中括號裏面,好比: if [ $a -eq 1 -a $b -eq 2]&&就是 if [ $a -eq 0 ] && [ $b -eq 2 ];

關於字符串匹配的if判斷是 : if [ 反引號echo $name | grep -e pattern ] ; then ... 反引號

要注意的是: 在 比較字符串是否相等的時候, 後面要加上一個附加的 額外字符(任意字符,好比x), 若是某個變量爲空 str= 在判斷是否爲空的時候, 不能這樣寫if [ $str = '' ] 而是 直接加上一個 末尾的附加字符串 來比較, 好比: if [ "$str"x = "x" ];


在shell中, 跟其餘編程語言對字符串變量的 認定是同樣的, 即變量取名的時候, 都是"最大程度的 貪婪匹配", 好比, 原本有一個變量是 str, 可是若是你寫成: if [ $strx = 'x' ] 那麼這時候, 他不會認爲是 變量 $str 和字符x的鏈接, 而是直接把他當成 變量 $strx了, 由於以前 的 $strx 變量沒有申明, 變量爲空, 因此仍然會報錯: unary operator expected.... 即:

凡是你 須要將變量和後面的字符/字符串 相區別, 而不想讓 shell認爲是一個總體的變量名的時候, 就應該用 雙引號 進行 分割 /界定

[root@localhost ~]# str=
[root@localhost ~]# if [ $strx = "x" ]; then echo 'right'; fi
-bash: [: =: unary operator expected
[root@localhost ~]# if [ "$str"x = "x" ]; then echo 'right'; fi
right


比較兩個字符串是否相等的辦法是:

    if [ "$test"x = "test"x ]; then

    這裏的關鍵有幾點:

    1 使用單個等號

    2 注意到等號兩邊各有一個空格:這是unix shell的要求

    3 注意到"$test"x最後的x,這是特地安排的,由於當$test爲空的時候,上面的表達式就變成了x = testx,顯然是不相等的。而若是沒有這個x,表達式就會報錯:[: =: unary operator expected



  1. pidof和pgrep 都是列出進程的id號的命令.
    pidof 須要 精確 程序的名字, 而 pgrep 只是須要 程序的 大體名字, 能夠進行模糊匹配.
    而pkill 則是根據 程序的名字, 殺死程序.

at命令的使用

garble: [ga:bl], 斷章取義, 曲解, 歪曲, 篡改.
at 命令提示 garbled time表示時間設置不對.

at命令表示的是, 在未來某個指定的時間 執行某個事件。至關於win的 計劃任務
格式是:at [options] 時間 + 要執行的具體任務
也能夠有at 交互式命令輸入
在交互式的at命令中, 結束命令的輸入 是 按 ctrl+d , 注意不是 ctlr_c, ctrl_c是放棄, 取消當前輸入的命令, 取消at 安排!
at每設置一次, 設置一個job, 顯示已經設置的 job是: job 序號 at 執行時間. 顯示的時候, 老是從 上到下 顯示最近設置的 at . 即按 job 從大到小的順序進行
at 有不少別名, 好比: at -l =atq, at -d =atrm 等等.
at 也能夠把要執行的命令放在 一個文件中, 使用 -f 選項:
at -f jobs.at_todo 23:00 2010-12-12

運行at命令須要開啓 atd 服務

at命令的其餘細節

  1. at命令是在指定的時間 必須執行 一次**, 而若是不是很重要的/緊急的任務, 非必須的任務, 可使用 batch命令. 而若是是 週期性的執行預訂的命令則使用 crond文件...
  2. at 命令指定命令的時候, 要指定命令的 全路徑, 好比 要指定 /bin/echo, /bin/cp 而不要只是說 echo, cp等.
  3. at默認的是顯示你已經設置了那些jobs, 要查看具體的某個job的內容, 要使用 at -c jobid (其中的-c表示 --content內容的意思).
  4. at 的配置是/etc/at.allow, /etc/at.deny限制哪些用戶可使用at, 哪些用戶不容許使用.. 規則是: 若是allow和deny都不存在, 則只有root用戶可使用at命令, 若是 allow和deny都存在, 則按裏面寫的用戶決定.

linux系統中 不少常常變化的內容都 放在 /var目錄中, 有的直接放在 /var下, 有的放在/var下的spool, 通常的進程號放在 /var/run/目錄下, 等等, at命令的 內容項要放在 /var/spool/at, /var/run/at/裏面放的是pid文件.

quota是什麼意思
是磁盤對用戶的配額設置, 他會首先去讀取 /etc/filesystems中的內容, 而後顯示全部的fs的配額

echo >> 是 添加, 那麼要刪除 某一行呢? : 使用 sed命令. 很簡單: sed -i -e '$d' foo.txt

NURBS曲線: 是非統一有理B樣條曲線:
Non-Uniform 是指一個控制頂點的影響力範圍能夠可以改變,
Rational 有理, 是指曲線能夠用數學表達式來定義
B 樣條曲線 spline : 由於在模擬 擬合多個點構成的曲線時, 是用 有彈性的木條來擬合的, 因此叫樣條曲線.

如何設置ip地址和網關和dns服務器?
route add default gw ...dev eth0? : dev是說要設置哪一個網卡的默認網關? 你能夠具體的指定是 哪一個 網卡的 默認網關...

動名詞和名詞的區別?
好比,amazing, 動名詞具備動詞的性質,因此能夠帶其餘成分賓語、或狀語成分。而其餘普通的名詞則不能。

完全地掌握 sed 工具了:

sed 是流編輯, 它會把後面跟的文件 中的內容, 一行一行地讀出來, 而後進行處理, 而後默認的輸出到控制檯. 他的格式是: sed [options] '編輯的命令腳本' files
即sed的後面是選項, 和 你要對文件進行什麼樣的編輯命令, 最後是要編輯的文件名稱.
一句話深刻到sed的實質: sed實際上就是跟 vim的 編輯命令/冒號命令 徹底是同樣的! 你知道vim的冒號命令/命令模式的使用, 就同樣的使用sed命令了. 只是sed命令不須要打開文件...
命令腳本組成: 編輯範圍 + 編輯命令,
默認的是 對全部的行都進行相應的編輯, (至關於%), 固然你也能夠 指定只 編輯哪些範圍, 其餘的不知足條件的行不編輯
編輯的時候, 是把當前行 讀取 -> 拷貝 到 緩衝區, 而後進行編輯操做.

編輯範圍好比: 1 | 1, $| /^a.A$/ | /^a.A/, $ 等等
編輯命令包括: 增刪該: i , d , s , a , c  等, 命令的格式是 單字符命令中間加一個空格後, 而後 用 反斜槓 . 不過注意的是, 命令後面能夠不加 空格, 也能夠不加反斜槓, 什麼都不加, 加上空格, 反斜槓只是 便於閱讀和理解.

總之, sed是很智能的, 基本上, 你不寫 一些輔助代碼的時候, 都儘可能 來解析...
sed -e 'script - expression' 命令中的 -e 等於--expression=script... , -e能夠不要, 不寫.
script-expression表示的是 "add the script to the commands to be executed" 要添加到命令中去執行的腳本...
i, a,c,d, s等命令中, 後面的空格和反斜槓不是必須的, 只有當解析出現錯誤的時候, 纔去添加空格或反斜槓.
注意a和i的 含義, 他們是表示 在當前 正在處理的行 的前面或後面 添加/插入一行.
c是替換 整個處理的行, 而s只是替換 行中的 字符串. 兩個不同.
同時 在執行sed 的時候, 能夠同時指定多個 -e腳本命令表達式, 來一次性地執行多個指令, 好比: cat /etc/at.deny | sed -e ' $a \foo' -e '$a \bar' -e '$a \ itoto'


  1. 爲何dhcp服務器不是挨着依次分配ip地址的? dhcp服務器有的是從大到小分配地址, 而有的是從小到大分配地址的呢?
    這個要看os的不一樣, linux是從大到小分配ip地址的. 而win與之相反, 是從小到大進行分配的.
    還有的是要分配靜態地址, 而有的還要和client進行ip地址的協商. 一般若是沒有其餘搶地址的話, 都是在refresh時間到了的時候, 仍是分配原來的ip地址.

ARP和DNS是同樣的嗎?

  1. 雖然他們 都是 進行 ip地址轉換的, 可是轉換的 目標不一樣 arp是將 ip -> mac 地址. 而dns 是將 域名 dn: domain name ->ip地址.
  2. gra'tuitous arp: 免費arp, 無端arp, 是在啓動的時候, 發送一個 arp請求,獲得ip地址對應的mac地址
  3. ARP協議是「Address Resolution Protocol」(地址解析協議)的縮寫。 就是在 局域網中, (同一個網段, 或鏈接在 同一個 交換機上的 全部機器) 進行通訊的協議. 那爲何要進行解析呢?
  4. 由於, 在第三層傳輸的時候, 使用 是 ip地址, 傳輸單位是包 package, 而當包下傳到 第二層的時候, 分到局域網中時,進行傳輸的是「幀」,幀裏面要封裝 目標主機的MAC地址的。
    在以太網中,一個主機要和另外一個主機進行直接通訊,必需要知道目標主機的MAC地址。但這個目標MAC地址是如何得到的呢?它就是經過地址解析協議得到的。 ARP協議的基本功能就是經過目標設備的IP地址,查詢目標設備的MAC地址,以保證通訊的順利進行。

  5. ARP協議的工做原理
    在每檯安裝有TCP/IP協議的電腦裏都有一個 ARP緩存表,表裏的IP地址與MAC地址是一一對應的.
    以主機A(192.168.1.5)向主機B(192.168.1.1)發送數據爲例。當發送數據時,主機A會在本身的ARP緩存表中尋找是否有目標IP地址。若是找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裏面發送就能夠了;
    可是, 若是在ARP緩存表中沒有找到相對應的IP地址,主機A就會在網絡上發送一個廣播,目標MAC地址是「FF.FF.FF.FF.FF.FF」,這表示向同一網段內的全部主機發出這樣的詢問:「192.168.1.1的MAC地址是什麼?」網絡上其餘主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A作出這樣的迴應:「192.168.1.1的MAC地址是00-aa-00-62-c6-09」。這樣,主機A就知道了主機B的MAC地址,它就能夠向主機B發送信息了。

ARP的緩存?? : : 當 第一次 找到 主機B的 mac地址後 , 爲了不後面再屢次進行詢問, 須要暫時將 這個B 主機的條目保存下來, 即就是要 更新了本身的ARP緩存表,下次再向主機B發送信息時,直接從ARP緩存表裏查找就能夠了。

ARP的老化, 如同你註冊一個郵箱同樣, 若是你註冊後, 在一段時間內都沒有用過, 那麼它就會給你刪除 即老化 機制:::: 可是有一個問題, 若是把每次 曾經經過信的主機的mac地址條目無論時間 過了多久 都永遠保存, 那樣, arp表將會很大, 既不便於存儲, 浪費存儲空間, 又不便於查詢 將會浪費不少的查詢時間...
因此:: ARP緩存表採用了老化機制,在一段時間內若是表中的某一行沒有使用,就會被刪除,這樣能夠大大減小ARP緩存表的長度,又 加快查詢速度。

ARP攻擊 就是經過僞造IP地址和MAC地址實現ARP欺騙,可以在網絡中產生大量的ARP通訊量使網絡阻塞,攻擊者只要持續不斷的發出僞造的ARP響應包就能更改目標主機ARP緩存中的IP-MAC條目,形成網絡中斷或中間人攻擊。 ARP攻擊主要是存在於局域網網絡中,局域網中如有一我的感染ARP木馬,則感染該ARP木馬的系統將會試圖經過「ARP欺騙」手段截獲所在網絡內其它計算機的通訊信息,並所以形成網內其它計算機的通訊故障。


名稱服務有三種狀況: hosts文件解析, nis/nis+/nisplus(3.0版本) 網絡信息服務, 和dns服務

那麼這三種 名稱服務的 採用的 前後次序是 怎樣規定的呢? 由 文件: /etc/nsswitch.conf : 即: 名稱服務切換...

named 區域文件中的各個術語和 名稱記錄的含義: 參考 https://wenku.baidu.com/view/63544d8ea0116c175f0e4897.html

cname: 命名(aliases):

相關文章
相關標籤/搜索