夕口技術錄
專業上的小常識,備而用之~
Monthly Archives: 十二月 2009
[MySQL][SUBSTRING_INDEX]
2009/12/17
Posted by 於 SUBSTRING_INDEX(str,delim,count)
傳回字串 str 中在第 count 個出現的分隔符 delim 之前的幾串。如果 count 是一個正數,傳回從最後的(從左邊開始計數)分隔符到左邊所有字元。如果 count 是負數,傳回從最後的(從右邊開始計數)分隔符到右邊所有字元:
mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, 2);
-> ‘http://www.mysql‘
mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, -2);
-> ‘mysql.com‘
[Linux] – 查詢已開啟檔案或已執行程序開啟之檔案
2009/12/17
Posted by 於 fuser:藉由檔案(或檔案系統)找出正在使用該檔案的程序 [root@www ~]# fuser [-umv] [-k [i] [-signal]] file/dir 選項與參數: -u :除了程序的 PID 之外,同時列出該程序的擁有者; -m :後面接的那個檔名會主動的上提到該檔案系統的最頂層,對 umount 不成功很有效! -v :可以列出每個檔案與程序還有指令的完整相關性! -k :找出使用該檔案/目錄的 PID ,並試圖以 SIGKILL 這個訊號給予該 PID; -i :必須與 -k 配合,在刪除 PID 之前會先詢問使用者意願! -signal:例如 -1 -15 等等,若不加的話,預設是 SIGKILL (-9) 囉! 範例一:找出目前所在目錄的使用 PID/所屬帳號/權限 為何? [root@www ~]# fuser -uv . USER PID ACCESS COMMAND .: root 20639 ..c.. (root)bash 範例: 直接將 /usr/local/server/bin/httpd 依找出的PID kill -9 [root@serverX64 data]# fuser -k /usr/local/server/bin/httpd /usr/local/server/bin/httpd: 17717e 17796e 17797e 17798e 17852e將 /usr/local/server/bin/httpd 找出PID 經由詢問後才 kill -9 [root@seerverX64 data]# fuser -ki /usr/local/server/bin/httpd /usr/local/server/bin/httpd: 13397e 13399e 13400e 13402e 13404e 13406eKill process 13397 ? (y/N) n Kill process 13399 ? (y/N) n Kill process 13400 ? (y/N) n Kill process 13402 ? (y/N) n Kill process 13404 ? (y/N) n Kill process 13406 ? (y/N) n
lsof :列出被程序所開啟的檔案檔名
相對於 fuser 是由檔案或者裝置去找出使用該檔案或裝置的程序,反過來說, 如何查出某個程序開啟或者使用的檔案與裝置呢?就是使用 lsof[root@www ~]# lsof [-aUu] [+d] 選項與參數: -a :多項資料需要『同時成立』才顯示出結果時! -U :僅列出 Unix like 系統的 socket 檔案類型; -u :後面接 username,列出該使用者相關程序所開啟的檔案; +d :後面接目錄,亦即找出某個目錄底下已經被開啟的檔案! 範例一:列出目前系統上面所有已經被開啟的檔案與裝置: [root@www ~]# lsof COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root cwd DIR 3,2 4096 2 / init 1 root rtd DIR 3,2 4096 2 / init 1 root txt REG 3,2 38620 1426405 /sbin/init ....(底下省略).... # 注意到了嗎?是的,在預設的情況下, lsof 會將目前系統上面已經開啟的 # 檔案全部列出來~所以,畫面多的嚇人啊!您可以注意到,第一個檔案 init 執行的 # 地方就在根目錄,而根目錄,嘿嘿!所在的 inode 也有顯示出來喔! 範例二:僅列出關於 root 的所有程序開啟的 socket 檔案 [root@www ~]# lsof -u root -a -U COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME udevd 400 root 3u unix 0xedd4cd40 1445 socket auditd 4256 root 7u unix 0xedd4c380 9081 socket audispd 4258 root 0u unix 0xedd4c1e0 9080 socket # 注意到那個 -a 吧!如果你分別輸入 lsof -u root 及 lsof -U ,會有啥資訊? # 使用 lsof -u root -U 及 lsof -u root -a -U ,呵呵!都不同啦! # -a 的用途就是在解決同時需要兩個項目都成立時啊! ^_^ 範例三:請列出目前系統上面所有的被啟動的周邊裝置 [root@www ~]# lsof +d /dev COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root 10u FIFO 0,16 1147 /dev/initctl udevd 400 root 0u CHR 1,3 1420 /dev/null udevd 400 root 1u CHR 1,3 1420 /dev/null udevd 400 root 2u CHR 1,3 1420 /dev/null # 看吧!因為裝置都在 /dev 裡面嘛!所以囉,使用搜尋目錄即可啊! 範例四:秀出屬於 root 的 bash 這支程式所開啟的檔案 [root@www ~]# lsof -u root | grep bash bash 20639 root cwd DIR 3,2 4096 648321 /root bash 20639 root rtd DIR 3,2 4096 2 / bash 20639 root txt REG 3,2 735004 1199424 /bin/bash bash 20639 root mem REG 3,2 46680 64873 /lib/libnss_files-2.5.so ....(底下省略)....
pidof :找出某支正在執行的程式的 PID
[root@www ~]# pidof [-sx] program_name 選項與參數: -s :僅列出一個 PID 而不列出所有的 PID -x :同時列出該 program name 可能的 PPID 那個程序的 PID 範例一:列出目前系統上面 init 以及 syslogd 這兩個程式的 PID [root@www ~]# pidof init syslogd 1 4286 # 理論上,應該會有兩個 PID 才對。上面的顯示也是出現了兩個 PID 喔。 # 分別是 init 及 syslogd 這兩支程式的 PID 啦。
[switch][clear] – clear ip arp command
2009/12/15
Posted by 於 Clear 單 ip
C3550#clear ip arp 10.1.21.7Clear All ARP
C3550#clear arp-cache
指令search
C3550#clear ip arp ?
A.B.C.D IP address of dynamic ARP entry
inspection Clear State of ARP Inspection
poll IP ARP host polling
[Linux][shell][grep][[xargs]][sed] – 多檔案一次置換取代字元指令
2009/12/11
Posted by 於 基本找尋 txt-02 字串指令
[root@X64 smarty]# grep -rl “txt-02″ *
snort/view.htm
snort/add.htm
adgroup/view.htm
找尋 txt-02 字串 + 多檔案一次置換取代字元指令
# grep -rl “txt-06″ * | xargs sed -i ‘s/txt-06/txt-02/g’
sed -i 使用充補 :直接修改檔案內容(危險動作)
sed 可以直接修改檔案的內容!
而不必使用管線命令或資料流重導向!
不過,由於這個動作會直接修改到原始的檔案,
所以請你千萬不要隨便拿系統設定檔來測試喔!
範例六:利用 sed 將 regular_express.txt 內每一行結尾若為 . 則換成 ! [root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt # 上頭的 -i 選項可以讓你的 sed 直接去修改後面接的檔案內容而不是由螢幕輸出喔! # 這個範例是用在取代!請您自行 cat 該檔案去查閱結果囉! 範例七:利用 sed 直接在 regular_express.txt 最後一行加入『# This is a test』 [root@www ~]# sed -i '$a # This is a test' regular_express.txt # 由於 $ 代表的是最後一行,而 a 的動作是新增,因此該檔案最後新增囉!sed 的『 -i 』選項可以直接修改檔案內容!
舉例來說,如有一個 100 萬行的檔案,要在第 100 行加某些文字,此時使用 vim 可能會瘋掉!因為檔案太大了!這時就可利用 sed 透過 sed 直接修改/取代的功能!
參考資料:鳥哥 – sed 工具
[HTML][CSS] – span與div的差異
2009/12/10
Posted by 於 <div> 是一個塊級(block-level),它包圍的元素和包圍之外的元素會自動換行。
<span> 僅是一個行內元素(inline elements),在它的前後皆不會自動換行的效果。
ex.
<div>
a
</div>
<div>
b
</div>
c<span>
a
</span>
<span>
b
</span>結果:
ab
c a b
[HTML][CSS] – span與div的差異
2009/12/10
Posted by 於 <div> 是一個塊級(block-level),它包圍的元素和包圍之外的元素會自動換行。
<span> 僅是一個行內元素(inline elements),在它的前後皆不會自動換行的效果。
ex.
<div>
a
</div>
<div>
b
</div>
c<span>
a
</span>
<span>
b
</span>結果:
ab
c a b
[Linux][while] – shell while loop commend
2009/12/09
Posted by 於 # while :; do free -m; sleep 1; done
紫色:要 查看 的指令集
ex.
- while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep ‘apache’; sleep 1; done # 看 Aaache
- while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep ‘mysql’; sleep 1; done # 看 MySQL
[Linux][while] – shell while loop commend
2009/12/09
Posted by 於 # while :; do free -m; sleep 1; done
紫色:要 查看 的指令集
ex.
- while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep ‘apache’; sleep 1; done # 看 Aaache
- while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep ‘mysql’; sleep 1; done # 看 MySQL
[Apache] – 設定伺服器所能接受之最大連續請求量
2009/12/04
Posted by 於 為了要防止不法人士,
使用某方式對網站在極短時間內,
進行大量的存取動作,
因此針對 http.conf 進行參數上的調。
TimeOut
語法:TimeOut <數字>
預設:TimeOut 300TimeOut 用來設定伺服器接收一個請求以及完成一個請求最長的等待時間〈以秒為單位〉,如果在此時間內沒有回應則終止服務。所以當接收或傳送一個資料時所花的時間超過 TimeOut 所規定的時間時,伺服器便將會中斷該連線。如果網路速度較慢,則此 Timeout 時間可以設長一些。
例:TimeOut 500
-> 指定 apache 接收或傳送的等待時間KeepAlive
語法:KeepAlive <(On/Off)>
預設:KeepAlive OnKeepAlive 用於設定伺服器要不要開啟連續請求的功能,On 是開啟,Off 是關閉。
例:KeepAlive On
-> 指定 apache 開啟連續請求功能MaxKeepAliveRequests
語法:MaxKeepAliveRequests <個數>
預設:MaxKeepAliveRequests 100MaxKeepAliveRequests 用於設定伺服器所能接受之最大連續請求量,如果連續請求超過這個此數限制則 Server 會自動拒絕請求連線。若設定為 0 則表示不做限制。
例:MaxKeepAliveRequests 0
-> 指定 apache 不限制所能接收之連線數量KeepAliveTimeout
語法:KeepAliveTimeout <秒數>
預設:KeepAliveTimeout 15KeepAliveTimeout 用於設定使用者 ‘連續’ 請求等待的時間上限,如果使用者連續請求的時間超過此數,則終止此請求服務。
例:KeepAliveTimeou 15
-> 指定 apache 等待使用者連續請求的時間,在接到使用者請求開始,15 秒內若沒收到新請求訊息,即中斷該連線
[Apache] – 設定伺服器所能接受之最大連續請求量
2009/12/04
Posted by 於 為了要防止不法人士,
使用某方式對網站在極短時間內,
進行大量的存取動作,
因此針對 http.conf 進行參數上的調。
TimeOut
語法:TimeOut <數字>
預設:TimeOut 300TimeOut 用來設定伺服器接收一個請求以及完成一個請求最長的等待時間〈以秒為單位〉,如果在此時間內沒有回應則終止服務。所以當接收或傳送一個資料時所花的時間超過 TimeOut 所規定的時間時,伺服器便將會中斷該連線。如果網路速度較慢,則此 Timeout 時間可以設長一些。
例:TimeOut 500
-> 指定 apache 接收或傳送的等待時間KeepAlive
語法:KeepAlive <(On/Off)>
預設:KeepAlive OnKeepAlive 用於設定伺服器要不要開啟連續請求的功能,On 是開啟,Off 是關閉。
例:KeepAlive On
-> 指定 apache 開啟連續請求功能MaxKeepAliveRequests
語法:MaxKeepAliveRequests <個數>
預設:MaxKeepAliveRequests 100MaxKeepAliveRequests 用於設定伺服器所能接受之最大連續請求量,如果連續請求超過這個此數限制則 Server 會自動拒絕請求連線。若設定為 0 則表示不做限制。
例:MaxKeepAliveRequests 0
-> 指定 apache 不限制所能接收之連線數量KeepAliveTimeout
語法:KeepAliveTimeout <秒數>
預設:KeepAliveTimeout 15KeepAliveTimeout 用於設定使用者 ‘連續’ 請求等待的時間上限,如果使用者連續請求的時間超過此數,則終止此請求服務。
例:KeepAliveTimeou 15
-> 指定 apache 等待使用者連續請求的時間,在接到使用者請求開始,15 秒內若沒收到新請求訊息,即中斷該連線
近期迴響