Sep
26
2007
0

Linux 上查看佔用指定端口的進程

在 Linux 上,如果想找出佔用某個 port 的進程,可使用 fuser 指令。

找出佔用 TCP port 8080 的進程:

  1. # fuser -v 8080/tcp

砍掉佔用 TCP port 8080 的進程:

  1. # fuser -k 8080/tcp
Written by Chris Lam in: Linux / Unix |
Jan
23
2007
0

Shell Script 變量中的路徑解析

編寫 Shell Script 時,如果變量的值是一個路徑的話,我們可以輕易擷取當中的路徑 (dirname) 或檔名 (basename).

變量 結果 說明
${path} /usr/local/bin/emacs 原本值
${path#/*/} local/bin/emacs 去除第一個資料夾
${path##/*/} emacs 只取檔名 (basname)
${path%/*} /usr/local/bin 只取路徑 (dirname)
${path:15} emacs 取第 15 個字元後的所有字元
${path:10:4} /bin 取第 10 個字元後的 4 個字元

最後兩個用法與 Java 的 subString 相同。

Written by Chris Lam in: Linux / Unix |
Jan
23
2007
0

刪除超大量 (eg 5000+) 檔案

如果嘗試使用 rm -f * 刪除超大量檔案 (eg 5000+),有可能會得到這個結果: Argument list too long

這種情況下唯有使用 FOR 迴圈,以一個指令便可把檔案逐個刪除:
for i in $(find /home/peter -type f); do rm -f $i; done

或者照樣使用 FOR 迴圈寫一個 Shell Script,每次刪除 10 個檔案 (沒測試過, USE AT YOUR OWN RISK):

  1. #!/bin/sh
  2.  
  3. FILES="";
  4. i=1;
  5.  
  6. for i in $(find /home/peter -type f); do
  7.  
  8.    FILES="${FILES} $i"
  9.    if [ $index -eq 10 ]; then
  10.       rm -f $FILES
  11.       i=0
  12.    fi
  13.  
  14.    i=`expr $i + 1`
  15.  
  16. done
Written by Chris Lam in: Linux / Unix |
Nov
17
2006
1

關閉 Linux Kernel 的 IPv6 支援

IPv6 (Internet Protocol Version 6) 多年來一直無法順利推動,本港的 ISP 更不在話下。但大部份 Linux Distro 的 kernel 都預設支援 IPv6,直接影響了網絡效能。以下方法可關閉 IPv6 支援:

Debian / Ubuntu
1. 開啟 /etc/modprobe.d/aliases
2. 裡面有一行是 “alias net-pf-10 ipv6″
3. 將以上一行用以下兩行取代:
alias net-pf-10 off
alias ipv6 off

Red Hat
1. 開啟 /etc/modprobe.conf
2. 加入這一行:
alias net-pf-10 off

更改以上檔案後,需要重新啟動系統才會生效。我在數部 CentOS 及 Fedora 主機關閉 IPv6 後,Resolve IP 的時間明顯加快了。

Written by Chris Lam in: Linux / Unix |
Nov
02
2006
0

ex 單行指令: 處理文字檔案

以往需要從文字檔中進行 Search & Replace, 通常都會使用 PERL。

但其實使用 VIM 的 ex 模式便可作更快的處理。

刪除特定字串:

  1. echo '/delete_me/d | x!' | ex - 123.txt

 

Search & Replace:

  1. echo '%s/search/replace/g | x!' | ex - 123.txt
Written by Chris Lam in: Linux / Unix |

Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes