putty: [p^ti]: 油灰, 膩子,像 clay 粘土同樣起 鏈接做用.
很是簡潔,只有500多kB, 不須要安裝,純綠色的,版本仍是0.x, Simon Tatham, 甚至沒有主界面,沒有菜單/工具欄什麼的, 僅僅只有一個建立鏈接的對話框, 鏈接後就只有一個方框了.
一般 沒有若是沒有什麼特殊緣由, 都是直接使用 這個 putty (油灰/膩子) 來鏈接的了.php
一般安裝一個軟件的時候,按類別放置:
基礎架構的東西放在include, lib中
配置文件放在conf目錄, 少數有的放在etc中
服務的 管理 啓動 中止等放在 sbin中
而對於服務的工具類如調試, utils等放在bin中
軟件包的資源文件一般放在share中, 好比軟件的css,js, images, man, scripts, documents幫助文檔等等...
還有一個很重要的目錄: var, 一般是對於服務器軟件來講的, 就是一些服務器 向外提供的內容, 一些常常會變化的內容, 好比httpd的 /var/www目錄, dns的 /var/named目錄等. 一般各類服務器的常常變換的實體內容都集中放在/var目錄中
還有一些 輔助目錄, 如: log等.css
dns的配置文件實際上只有兩個, 一個是主配置文件named.conf, 另外一個是區域數據文件.
對於區域文件的命名, 一般用 .zone結尾,好比: file "localdomain.zone"; 或者: file "0.0.127.zone"html
named.ca 中的ca是cache的意思, 是緩存的意思, 由於dns系統 支持暫存盤, 可是隻有 root根才能夠這樣命名.linux
動態dns系統是指 存在 主/從 master:slave dns-server的狀況下, 固然得要安裝其餘dns支持組件正則表達式
在dns中的IN, 指的是: IN = internet 資源類型.thinkphp
區域zone文件中的 allow-update {none;}; 表示的是是否 容許 客戶機/和當前dns服務器 自行更新本身的dns記錄.shell
dns的運行命令和服務名稱叫named, 可是提供他的包名稱是bind. bind: Barkley internet named daemon. 這是用得最多的 一種dns服務器軟件(也還有其餘的dns服務器軟件包).
一般要安裝的包有: bind, bind-utils ([i]或[ai] 是utility的縮寫,一些工具包性質的軟件), 還有 caching-nameserver數據庫
notepad中保存文件時光標會亂跳? 這是一個小bug? 解決方法是: 一種是取消"格式中的 自動換行", 第二種是: 打開文件時什麼都不要操做, 先ctrl-s保存一下,之後保存時就不會亂跑了express
若是您瞭解 DNS 的查詢模式﹐您會知道 DNS 服務器在查詢非本身管轄的 zone 的時候﹐首先會向 root 查詢下一級的 zone 在哪裏﹐而後逐級查詢下去。但問題是﹕當 named 剛啓動的時候﹐在 cache 裏面一片空白﹐它怎麼知道 root zone 的 servers 在哪裏呢﹖這不是一個矛盾嗎﹖因此﹐就必須靠這個檔案告訴 named 關於 root zone 的 servers 有哪些﹖以及在哪裏﹖ --- 明白了嗎﹖
zone "0.0.127.in-addr.arpa" IN { ....}
這裏的 in-addr.arpa 表示的是 internet - address. 這個是固定的寫法, 直接添加在 反ip地址後面就好了.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編程
由於bind在設計的時候, 就是這樣設計的, 主要是爲了 dns不中斷解析(一般生產環境中的dns服務器很繁忙的), 能夠經過rndc( 讓你得逞) 來在線更新 named. 因此named服務在啓動時, 必須經過 rndc來管理啓動: ** bind的named服務在啓動的時候, 會去經過rndc 和named之間的 TCP的套接字(hmac md5證書)來鏈接rndc服務器. 若是找不到rndc服務及其配置文件(如: /etc/rndc.conf) ,就會報錯,雖然你看 named服務進程是 running, 可是dns解析會error! **
wget https://www.isc.org/downloads/file/bind-9-10-6/
下載下來的名字就是bind-9-10-6, 要將這個文件更名爲: ...tar.gz在新的版本中, 使用了應用分組.
之前是使用多個 應用程序, 平級的, 好比最多見的兩個獨立的應用程序, 前臺和後臺, 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中就已經給你寫了一個入口文件了. 並且在開發分組和獨立分組上也有了較大的差異.
.,.+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, ...
head -n 5 foo.txt 等同於 head -n +5 foo.txt
而 tail -n 10 foo.txt 等同於 tail -n -10 foo.txt
head -n -3 foo.txt
表示的是 去掉 末尾的 3行文字 而 tail -n +5 foo.txt
表示的是 從開頭的 第5行開始(注意, 要包括這個第5行)直到末尾的行數所有顯示。killall和 kil的區別
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服務器的域名
init ?
這個命令, 當? =0 的時候, init 0
就表示 關機, init 6
就表示重啓.shutdown 若是沒有指明 message, 會默認的 報告: for maintenance. maintain的名詞, maintenance: during routine maintenance
注意: time參數是 必須的, 不然會報錯, 他要知道 何時關機? 有三種表示方法: 有意義的單詞 NOW; +m 表示多少分鐘後關機, m表示分鐘的數字; hh:mm指定關機的絕對時間.
[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是動態可變化的.
tail -f 是能夠 跟蹤 文件末尾的變化和新增內容 的, 其中 -f是follow的意思, 可是 當 被跟蹤文件 被移動或刪除的狀況下, -f可能會中止繼續輸出, 而這時候, 能夠用 -F 來一直跟蹤, 他能夠重建 被跟蹤文件...
雙圓括號, 是對 [, [[, test等的擴展. 能夠只 使用雙圓括號代替他們: features:
雙括號中的運算徹底支持c語言的全部運算符號,好比 a++, a--, a>1?true: false, 其次, 雙括號中的全部變量引用都不須要加 $
; 能夠擴展 四則運算\邏輯運算\結構運算if while for等; 可是要注意的是, 雙括號中的是表達式, 能夠是多個表達式, 之間用逗號分割, 可是要得到 雙括號的值, 好比你要 echo, 你要賦值, 則必須在雙括號前面加上 $
一個最大的區別是: 單中括號會進行 變量的擴展(若是是多個單詞的字符串, 會把它們看成多個單詞來看待, 這時候會產生錯誤), 因此像 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等關鍵字了.
$(())
等之類的 計算表達式的時候, 會 先將 表達式的值計算出來而後再打印,好比:[root@localhost foo]# echo b=$((a+3)) b=6
就是關於 能夠用在if while for等語句中 表示條件判斷的情形
\>, 或 \<
, 最重要的是字符串支持 單個字符串判斷, 好比: if [ "$name"]
, 可是 整數就不支持這種單個的邏輯運算而多個邏輯表達式 的 混合運算 能夠用 -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 ... 反引號
str=
在判斷是否爲空的時候, 不能這樣寫if [ $str = '' ]
而是 直接加上一個 末尾的附加字符串 來比較, 好比: if [ "$str"x = "x" ];
在shell中, 跟其餘編程語言對字符串變量的 認定是同樣的, 即變量取名的時候, 都是"最大程度的 貪婪匹配", 好比, 原本有一個變量是 str, 可是若是你寫成: if [ $strx = 'x' ]
那麼這時候, 他不會認爲是 變量 $str
和字符x的鏈接, 而是直接把他當成 變量 $strx
了, 由於以前 的 $strx
變量沒有申明, 變量爲空, 因此仍然會報錯: unary operator expected.... 即:
[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
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命令的其餘細節
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 [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'
由於, 在第三層傳輸的時候, 使用 是 ip地址, 傳輸單位是包 package, 而當包下傳到 第二層的時候, 分到局域網中時,進行傳輸的是「幀」,幀裏面要封裝 目標主機的MAC地址的。
在以太網中,一個主機要和另外一個主機進行直接通訊,必需要知道目標主機的MAC地址。但這個目標MAC地址是如何得到的呢?它就是經過地址解析協議得到的。 ARP協議的基本功能就是經過目標設備的IP地址,查詢目標設備的MAC地址,以保證通訊的順利進行。
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欺騙」手段截獲所在網絡內其它計算機的通訊信息,並所以形成網內其它計算機的通訊故障。
那麼這三種 名稱服務的 採用的 前後次序是 怎樣規定的呢? 由 文件: /etc/nsswitch.conf : 即: 名稱服務切換...
cname: 命名(aliases):