因為在Linux底下藥login道別的server,
遇到了這樣的問題,
Received Message too long xxxxxx
然後就斷線~囧
google之後發現是SFTP的陳年FAQ了
原因出在大家的.bashrc, .tcshrc, .cshrc裡面,
如果有echo一些東西, 或是執行一些會印出訊息的動作,
會讓sftp的server跟著去執行產生錯誤.
怎麼改呢?
如果是.bashrc請在頭尾加上如下指令
if [ $?prompt ]; then
(.bashrc的內容)
fi
.tcshrc和.cshrc請在頭尾加上如下指令
if ( $?prompt ) then
(.tcshrc或.cshrc的內容)
endif
這樣應該就可以解了(注意if condition裡面最好要有留空格喔!)
ADS
2008年1月16日 星期三
2008年1月9日 星期三
2007年12月31日 星期一
2007年12月27日 星期四
2007年12月23日 星期日
2007年12月16日 星期日
1216晚餐
2007年11月26日 星期一
2007年11月25日 星期日
1125晚餐
2007年11月21日 星期三
2007年11月20日 星期二
1120晚餐
2007年11月13日 星期二
1113晚餐
2007年11月12日 星期一
2007年11月8日 星期四
1108晚餐
2007年11月6日 星期二
1106晚餐
2007年11月1日 星期四
make in parallel -- option "-j"
這陣子一直有聽到make 後面加上"-j"這樣的傳說
以下是我個人survey後的小小心得,並未作實際實驗確認
首先看一下make的版本:
(在linux底下是可以直接打的,如果你用cygwin請確認你的make路徑已經設定好)
make –v
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
根據reference 1.
你的GNU make版本必須大於等於3.79才有支援parallel operation, 你剛下完make -v發現不支援,請跳過這篇文章吧!...XD
Parallel compile option:
Make –j N
Option “-j” 是指jobs的意思
當然後面的N是需要指定的,
如果不指定,直接使用"make -j"會讓系統盡可能用它可以調配的資源(推測可能make結束之前整部電腦是hang住狀態)
關於N的指定,有好幾種說法:
說法1-
如果是Dou Core(雙核)或是有HT技術的P4,請用"-j 2",
Quo Core(四核)請用"-j 3"
說法2-
請參閱Ref.3
RAM(MB為單位)/8 + 1為 N的數量
如果有1GB RAM-> 1024/8+1=129
所以可以開"-j 129",真...真的嗎?
說法3-
請參閱Ref.4
N的數值是CPU數量+1
2核用"-j 3", 3核用"-j 4"...
說法4-
直接去GNU.org找的,總該比較正確了吧?請參閱Ref.2
它說,如果你的系統有支援parallel execution,-j是可以讓你限定同時可以開多少job的,
有點像是thread的感覺(無責任亂講,我沒修過OS...@_@)
如果直接打'-j'而沒有任何數字,系統的確會盡可能的搾乾資源達到最高的job數,
所以'-j N'後面的N是為了限制job數量的(如果不用'-j',系統預設是'-j 1'...XD)
*另外裡面也有說DOS並不支援,但是我不知道裝了cygwin的DOS這樣到底能不能work.(來裝linux吧~~(招手))
無責任亂講-
我的想法是,根據我的傳統觀念,
一個CPU在同一個時間點,實際上只能執行一個thread,
'-j N'的N用CPU數量+1,'可能'比較有效率, 當然要注意當前系統的loading吧?
有機會我想試試看直接開'-j'或是開'-j 193'(實驗室桌機有1.5GB RAM...A_A)
或是有人可以回覆我測試心得嗎?
Ref.1(在0.3Building in parallel這一段)
http://gcc.gnu.org/install/build.html
Ref.2(5.7.3 Communicating Options to a Sub-make一開始第五段左右的位置)
http://www.gnu.org/software/automake/manual/make/Options_002fRecursion.html
Ref.3(請找"編譯加速")
http://fanqiang.chinaunix.net/a1/b1/20010427/161025_b.html
Ref.4(請搜尋"-j")
http://www.study-area.org/tips/palm.html
以下是我個人survey後的小小心得,並未作實際實驗確認
首先看一下make的版本:
(在linux底下是可以直接打的,如果你用cygwin請確認你的make路徑已經設定好)
make –v
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
根據reference 1.
你的GNU make版本必須大於等於3.79才有支援parallel operation, 你剛下完make -v發現不支援,請跳過這篇文章吧!...XD
Parallel compile option:
Make –j N
Option “-j” 是指jobs的意思
當然後面的N是需要指定的,
如果不指定,直接使用"make -j"會讓系統盡可能用它可以調配的資源(推測可能make結束之前整部電腦是hang住狀態)
關於N的指定,有好幾種說法:
說法1-
如果是Dou Core(雙核)或是有HT技術的P4,請用"-j 2",
Quo Core(四核)請用"-j 3"
說法2-
請參閱Ref.3
RAM(MB為單位)/8 + 1為 N的數量
如果有1GB RAM-> 1024/8+1=129
所以可以開"-j 129",真...真的嗎?
說法3-
請參閱Ref.4
N的數值是CPU數量+1
2核用"-j 3", 3核用"-j 4"...
說法4-
直接去GNU.org找的,總該比較正確了吧?請參閱Ref.2
它說,如果你的系統有支援parallel execution,-j是可以讓你限定同時可以開多少job的,
有點像是thread的感覺(無責任亂講,我沒修過OS...@_@)
如果直接打'-j'而沒有任何數字,系統的確會盡可能的搾乾資源達到最高的job數,
所以'-j N'後面的N是為了限制job數量的(如果不用'-j',系統預設是'-j 1'...XD)
*另外裡面也有說DOS並不支援,但是我不知道裝了cygwin的DOS這樣到底能不能work.(來裝linux吧~~(招手))
無責任亂講-
我的想法是,根據我的傳統觀念,
一個CPU在同一個時間點,實際上只能執行一個thread,
'-j N'的N用CPU數量+1,'可能'比較有效率, 當然要注意當前系統的loading吧?
有機會我想試試看直接開'-j'或是開'-j 193'(實驗室桌機有1.5GB RAM...A_A)
或是有人可以回覆我測試心得嗎?
Ref.1(在0.3Building in parallel這一段)
http://gcc.gnu.org/install/build.html
Ref.2(5.7.3 Communicating Options to a Sub-make一開始第五段左右的位置)
http://www.gnu.org/software/automake/manual/make/Options_002fRecursion.html
Ref.3(請找"編譯加速")
http://fanqiang.chinaunix.net/a1/b1/20010427/161025_b.html
Ref.4(請搜尋"-j")
http://www.study-area.org/tips/palm.html
2007年10月30日 星期二
1030晚餐
2007年10月28日 星期日
1028晚餐
2007年10月24日 星期三
1024晚餐
2007年10月23日 星期二
1023晚餐
2007年10月22日 星期一
1022晚餐
訂閱:
文章 (Atom)




















