更新 kernel module
/lib/modules/$(KERNEL_VER)/kernel/drivers/
# depmod
開機自動載入
/etc/modules-load.d/
新增檔案 new_file.conf
內容是要載入的 module 名稱
wl
Wanda Chaing 工作心得筆記
2015年9月3日 星期四
2013年8月12日 星期一
printf 顏色設置
以下是VT100終端中printf顏色設置,終端類型可以在SecureCRT中設置。
echo也能加顏色,只是必須要用echo -e ""(後面同printf)
printf輸出顏色和ANSI控制碼(高亮,下劃線,閃爍,光標位置,清屏等)
給printf的輸出加上些特效比如顏色,可以讓打印信息更鮮明,在debug的時候特別有用。
顏色:
顏色分為背景色和字體色,30~39用來設置字體色,40~49設置背景:
背景色字體色
40: 黑 30: 黑
41: 紅 31: 紅
42: 綠 32: 綠
43: 黃 33: 黃
44: 藍 34: 藍
45: 紫 35: 紫
46: 深綠 36: 深綠
47: 白色 37: 白色
記得在打印完之後,把顏色恢復成NONE,不然再後面的打印都會跟著變色。
另外,還可以加一些ANSI控制碼。加顏色只是以下控制碼中的一種:
echo也能加顏色,只是必須要用echo -e ""(後面同printf)
printf輸出顏色和ANSI控制碼(高亮,下劃線,閃爍,光標位置,清屏等)
給printf的輸出加上些特效比如顏色,可以讓打印信息更鮮明,在debug的時候特別有用。
顏色:
#define NONE "\033[m"
#define RED "\033[0;32;31m"
#define LIGHT_RED "\033[1;31m"
#define GREEN "\033[0;32;32m"
#define LIGHT_GREEN "\033[1;32m"
#define BLUE "\033[0;32;34m"
#define LIGHT_BLUE "\033[1;34m"
#define DARY_GRAY "\033[1;30m"
#define CYAN "\033[0;36m"
#define LIGHT_CYAN "\033[1;36m"
#define PURPLE "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN "\033[0;33m"
#define YELLOW "\033[1;33m"
#define LIGHT_GRAY "\033[0;37m"
#define WHITE "\033[1;37m"
#define RED "\033[0;32;31m"
#define LIGHT_RED "\033[1;31m"
#define GREEN "\033[0;32;32m"
#define LIGHT_GREEN "\033[1;32m"
#define BLUE "\033[0;32;34m"
#define LIGHT_BLUE "\033[1;34m"
#define DARY_GRAY "\033[1;30m"
#define CYAN "\033[0;36m"
#define LIGHT_CYAN "\033[1;36m"
#define PURPLE "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN "\033[0;33m"
#define YELLOW "\033[1;33m"
#define LIGHT_GRAY "\033[0;37m"
#define WHITE "\033[1;37m"
比如:
printf("\033[31m ####----->> \033[32m" "hello\n" "\033[m")
int main()
{
printf( CYAN "current function is %s " GREEN " file line is %d\n" NONE, __FUNCTION__, __LINE__ );
fprintf(stderr, RED "current function is %s " BLUE " file line is %d\n" NONE, __FUNCTION__, __LINE__ );
return 0;
}
int main()
{
printf( CYAN "current function is %s " GREEN " file line is %d\n" NONE, __FUNCTION__, __LINE__ );
fprintf(stderr, RED "current function is %s " BLUE " file line is %d\n" NONE, __FUNCTION__, __LINE__ );
return 0;
}
顏色分為背景色和字體色,30~39用來設置字體色,40~49設置背景:
背景色字體色
40: 黑 30: 黑
41: 紅 31: 紅
42: 綠 32: 綠
43: 黃 33: 黃
44: 藍 34: 藍
45: 紫 35: 紫
46: 深綠 36: 深綠
47: 白色 37: 白色
記得在打印完之後,把顏色恢復成NONE,不然再後面的打印都會跟著變色。
另外,還可以加一些ANSI控制碼。加顏色只是以下控制碼中的一種:
\033[0m 關閉所有屬性
\033[1m 設置高亮度
\033[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設置前景色
\033[40m -- \033[47m 設置背景色
\033[nA 光標上移n行
\033[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH 設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\033[?25h 顯示光標
來源: http://chunchaichang.blogspot.tw/2011/07/printf.html
\033[1m 設置高亮度
\033[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設置前景色
\033[40m -- \033[47m 設置背景色
\033[nA 光標上移n行
\033[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH 設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\033[?25h 顯示光標
來源: http://chunchaichang.blogspot.tw/2011/07/printf.html
2013年4月11日 星期四
緒程(task, thread) 間資料的同步與鎖定
種類 | 適用情況 | 狀態 | |
Binary Semaphore | 只能被唯一一個緒程獨佔存取的資源 | 佔用與非佔用 | 旗號可以被任意緒程獲取並釋放 |
Semaphore | 允許多個緒程同時存取的資源 | 獲取: | 旗號可以被任意緒程獲取並釋放 |
Mutex | 只能被唯一一個緒程獨佔存取的資源 | 由同一個緒程獲取和釋放 | |
Critical Section | 進入關鍵區段 | 作用範圍僅限於該行程,其他行程無法獲取鎖定。 | |
Read-Write Lock | 適用於讀取頻繁,僅偶爾寫入的情況。 | 兩種獲取方式: 若鎖定處於共用狀態,緒程試圖獲取獨佔,必須等所有緒程釋放鎖定 |
2013年4月2日 星期二
在 Ubuntu 上快速安裝設定 pure-ftpd
# 切換成 root
sudo -i
# 安裝 pure-ftpd
# 依據 pureftpd.passwd 來建立認證資料庫 /etc/pure-ftpd/pureftpd.pdb。
# 將來要是 pureftpd.passwd 有異動,須執行 "pure-pw mkdb",以更新資料庫內容。
pure-pw mkdb
# 其實您在建立虛擬帳號的同時,就可以使用 -m 參數來把 pureftpd.pdb 給順便建立起來:
# 上面兩個指令可以合併成下面一個指令
pure-pw useradd ftpuser -u ftpuser -g ftpgroup -d /home/ftpuser -m
# 重啟ftp服務器
sudo -i
# 安裝 pure-ftpd
apt-get install pure-ftpd
# 建立 ftpuser 家目錄
mkdir /home/ftpuser
# 新增 ftpuser 使用者以及 ftpgroup 群組
groupadd ftpgroup
useradd ftpuser -g ftpgroup -s /bin/false -d /home/ftpuser
chown -R ftpuser:ftpgroup /home/ftpuser
# 使用 pure-pw 指令來建立虛擬帳號
# 新增完畢後,您應可以在
# /etc/pure-ftpd/ 目錄下找到一個叫 pureftpd.passwd 的檔案,而這個檔案就類似於
# /etc/passwd 啦,只不過它是屬於虛擬帳號的 password file。
# 建立 ftpuser 家目錄
mkdir /home/ftpuser
# 新增 ftpuser 使用者以及 ftpgroup 群組
groupadd ftpgroup
useradd ftpuser -g ftpgroup -s /bin/false -d /home/ftpuser
chown -R ftpuser:ftpgroup /home/ftpuser
# 使用 pure-pw 指令來建立虛擬帳號
# 新增完畢後,您應可以在
# /etc/pure-ftpd/ 目錄下找到一個叫 pureftpd.passwd 的檔案,而這個檔案就類似於
# /etc/passwd 啦,只不過它是屬於虛擬帳號的 password file。
pure-pw useradd ftpuser -u ftpuser -g ftpgroup -d /home/ftpuser
Password:
Enter it again:
Password:
Enter it again:
# 依據 pureftpd.passwd 來建立認證資料庫 /etc/pure-ftpd/pureftpd.pdb。
# 將來要是 pureftpd.passwd 有異動,須執行 "pure-pw mkdb",以更新資料庫內容。
pure-pw mkdb
# 其實您在建立虛擬帳號的同時,就可以使用 -m 參數來把 pureftpd.pdb 給順便建立起來:
# 上面兩個指令可以合併成下面一個指令
pure-pw useradd ftpuser -u ftpuser -g ftpgroup -d /home/ftpuser -m
# 重啟ftp服務器
/etc/init.d/pure-ftpd restart
2013年1月28日 星期一
How to remove a VOB or View from the ClearCase registry whose storage was deleted
同時有用 Clear Case 的 Windows 工具和 Linux 工具
Windows 介面親和功能操作方便但是很慢
Linux 介面使用指令操作,沒有華麗的GUI,但是快很多
有時候 clearcase view 整個資料夾位置經過搬動或是不正當被移除了
系統裡還存有之前的註冊資料,這時想要再用指令刪除 view 會遇到下面的錯誤:
%>cleartool unregister -view \\host1\ccstg_e\views\test.vws
cleartool: Error: Unable to open file "\\host1\ccstg_e\views\test.vws": No such file or directory.
cleartool: Error: \\host1\ccstg_e\views\test.vws is not a view: No such file or directory
cleartool: Error: Attempt to get location information about "\\host1\ccstg_e\views\test.vws" failed: ClearCase object not found.
這個時候必須要找出原來註冊的 uuid 才能刪除:
%>cleartool lsview -long test
Tag: test
Global path: \\host1\ccstg_e\views\test.vws
Server host: host1
Region: dev
Active: NO
View tag uuid:c8b329ed.60814357.9806.26:55:85:75:e2:bf
View on host: host1
View server access path: e:\ClearCase_Storage\views\test.vws
View uuid: c8b329ed.60814357.9806.26:55:85:75:e2:bf
View owner: DOM1\jdoe
移除註冊資訊:
VIEW example: cleartool unregister -view -uuid <uuid>
Example:
%>cleartool unregister -view -uuidc8b329ed.60814357.9806.26:55:85:75:e2:bf
移除 view tag
VIEW example: cleartool rmtag -view <view-tag>
Example:
%>cleartool rmtag -view test
移除 view
Run cleartool rmview -force -all -uuid <view uuid>
參考資料:
IBM: How to remove a VOB or View from the ClearCase registry whose storage was deleted
Windows 介面親和功能操作方便但是很慢
Linux 介面使用指令操作,沒有華麗的GUI,但是快很多
有時候 clearcase view 整個資料夾位置經過搬動或是不正當被移除了
系統裡還存有之前的註冊資料,這時想要再用指令刪除 view 會遇到下面的錯誤:
%>cleartool unregister -view \\host1\ccstg_e\views\test.vws
cleartool: Error: Unable to open file "\\host1\ccstg_e\views\test.vws": No such file or directory.
cleartool: Error: \\host1\ccstg_e\views\test.vws is not a view: No such file or directory
cleartool: Error: Attempt to get location information about "\\host1\ccstg_e\views\test.vws" failed: ClearCase object not found.
這個時候必須要找出原來註冊的 uuid 才能刪除:
%>cleartool lsview -long test
Tag: test
Global path: \\host1\ccstg_e\views\test.vws
Server host: host1
Region: dev
Active: NO
View tag uuid:c8b329ed.60814357.9806.26:55:85:75:e2:bf
View on host: host1
View server access path: e:\ClearCase_Storage\views\test.vws
View uuid: c8b329ed.60814357.9806.26:55:85:75:e2:bf
View owner: DOM1\jdoe
移除註冊資訊:
VIEW example: cleartool unregister -view -uuid <uuid>
Example:
%>cleartool unregister -view -uuidc8b329ed.60814357.9806.26:55:85:75:e2:bf
移除 view tag
VIEW example: cleartool rmtag -view <view-tag>
Example:
%>cleartool rmtag -view test
移除 view
Run cleartool rmview -force -all -uuid <view uuid>
參考資料:
IBM: How to remove a VOB or View from the ClearCase registry whose storage was deleted
2012年12月26日 星期三
Linux 修改系統時間
設置時間,設置完了可以用date命令查看對不對
date -s 10:05:30
date -s 10:05:30
寫入主機板的BIOS
hwclock -w
=======================================
su -c 'date -s 月/日/年'
su -c 'date -s 時:分:秒'
=======================================
了解Linux的時鐘
由於Linux時鐘和Windows時鐘從概念的分類、使用到設置都有很大的不同,所以,搞清楚Linux時鐘的工作方式與設置操作,不僅對於Linux初學者有著重大意義,而且對於使用Linux服務器的用戶來說尤為重要。
Linux時鐘的分類
Windows 時鐘大家可能十分熟悉了,Linux時鐘在概念上類似Windows時鐘顯示當前系統時間,但在時鐘分類和設置上卻和Windows大相徑庭。和Windows不同的是,Linux將時鐘分為系統時鐘(System Clock)和硬件(Real Time Clock,簡稱RTC)時鐘兩種。系統時間是指當前Linux Kernel中的時鐘,而硬件時鐘則是主板上由電池供電的那個主板硬件時鐘,這個時鐘可以在BIOS的“Standard BIOS Feture”項中進行設置。
既然Linux有兩個時鐘系統,那麼大家所使用的Linux默認使用哪種時鐘系統呢?會不回出現兩種系統時鐘衝突的情況呢?這些疑問和擔心不無道理。首先,Linux並沒有默認哪個時鐘系統。當Linux啟動時,硬件時鐘會去讀取系統時鐘的設置,然後系統時鐘就會獨立於硬件運作。
從Linux啟動過程來看,系統時鐘和硬件時鐘不會發生衝突,但Linux中的所有命令(包括函數)都是採用的系統時鐘設置。不僅如此,系統時鐘和硬件時鐘還可以採用異步方式,見圖1所示,即係統時間和硬件時間可以不同。這樣做的好處對於普通用戶意義不大,但對於Linux網絡管理員卻有很大的用處。例如,要將一個很大的網絡中(跨越若干時區)的服務器同步,假如位於美國紐約的Linux服務器和北京的Linux服務器,其中一台服務器無須改變硬件時鐘而只需臨時設置一個系統時間,如要將北京服務器上的時間設置為紐約時間,兩台服務器完成文件的同步後,再與原來的時鐘同步一下即可。這樣系統和硬件時鐘就提供了更為靈活的操作。
設置Linux的時鐘
在Linux中,用於時鐘查看和設置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不過clock命令除了支持x86硬件體系外,還支持Alpha硬件體系。由於目前絕大多數用戶使用x86硬件體系,所以可以視這兩個命令為一個命令來學習。
1.在虛擬終端中使用date命令來查看和設置系統時間
查看系統時鐘的操作:
# date
設置系統時鐘的操作:
# date 091713272003.30
通用的設置格式:
# date 月日時分年.秒
2.使用hwclock或clock命令查看和設置硬件時鐘
查看硬件時鐘的操作:
# hwclock --show 或
# clock --show
2003年09月17日星期三13時24分11秒-0.482735 seconds
設置硬件時鐘的操作:
# hwclock --set --date="09/17/2003 13:26:00"
或者
# clock --set --date="09/17/2003 13:26:00"
通用的設置格式:hwclock/clock --set --date=“月/日/年時:分:秒”。
3.同步系統時鐘和硬件時鐘
Linux系統(筆者使用的是Red Hat 8.0,其它系統沒有做過實驗)默認重啟後,硬件時鐘和系統時鐘同步。如果不大方便重新啟動的話(服務器通常很少重啟),使用clock或hwclock命令來同步系統時鐘和硬件時鐘。
硬件時鐘與系統時鐘同步:
# hwclock --hctosys
或者
# clock --hctosys
上面命令中,--hctosys表示Hardware Clock to SYStem clock。
系統時鐘和硬件時鐘同步:
# hwclock --systohc
或者
# clock --systohc
使用圖形化系統設置工具設置時間
對於初學者來,筆者推薦使用圖形化的時鐘設置工具,如Red Hat 8.0中的日期與時間設置工具,可以在虛擬終端中鍵“redhat-config-time”命令,或者選擇“K選單/系統設置/日期與時間”來啟動日期時間設置工具。使用該工具不必考慮系統時間和硬件時間,只需從該對話框中設置日期時間,可同時設置、修改系統時鐘和硬件時鐘。
Internet同步時鐘設置
在Windows XP日期與時間設置中有一項與Internet同步的功能,有了這項功能只要上網便可得到十分準確的時間。 Red Hat 8.0也提供了這樣的功能,在日期與時間設置工具對話框中的下部,有一個“啟用網絡時間協議”的選項,將該項選中就可以使用網絡時間協議來同步Linux 系統時鐘。選中該項後,其下面的服務器下拉列錶框就變為可用狀態,可從中選擇一個時間服務器作為遠程時間服務器。然後單擊確定按鈕,便可連接所設定的時間服務器,並與之同步時間。
關於網絡校時: ntpdate
基本上,網絡校時需要兩個步驟:
1. 由time.stdtime.gov.tw 取得最新的時間,並實時更新Linux 系統時間;
2. 更改 BIOS 的時間。
[root @test root]# ntpdate time.stdtime.gov.tw
[root @test root]# clock –w
來源: http://www.uddtm.com/server/openssh/92.html
2012年12月21日 星期五
vim 進階設定
編碼的設定
我的環境是zh_TW.UTF-8那如果別人給我一個big5編碼的檔不就不能開了,不過vim會做轉碼的動作,所以可以放心。在.vimrc裡面加入
set fencs=utf-8,big5 "vim開檔自動判斷檔案編碼先從utf-8開始
set fenc=utf-8 "建立新檔的時候什麼編碼建立
set env=utf-8 "vim所使用的內部編碼
簡單來說三個例子
1、檔案編碼為utf-8
開啟vim的時候由fencs所指定的清單來判斷檔案的內部編碼,此時判斷為utf-8,而它與我們vim的內部編碼相同都是utf-8,所以直接就可以正確顯示。
2、檔案編碼為big5
開啟vim的時候由fencs所指定的清單來判斷檔案的內部編碼,此時判斷為big5,而它與我們vim的內部編碼不同,我們內部編碼是utf-8,所以vim會呼叫iconv把讀出來的big5轉換成utf-8編碼,就可以正確顯示,而如果我們修改完內容寫回檔案的時候,vim又會將utf-8自動轉換成big5寫回檔案。
3、開新檔案
由於設定fenc=utf-8所以檔案在建立的時候就會以utf-8來編碼,雖然不設定的話,預設vim會讀取目前locale所使用的語系來建立檔案,但是如果常常語系改來改去的話,常常建立的檔案自己都不知道是什麼編碼,所以加入這個設定。
視窗分割
vim可以把一個視窗分割成幾個視窗,可以縱切也可以橫切,通常我使用縱切的話分割成左右兩個畫面,這樣可以同時開兩個程式碼而且可以對照著看內容,非常的方便。ctrl+w, v 切割垂直分割
ctrl+w, n 切割水平分割
ctrl+w, q 關閉分割
ctrl+w, - 縮小分割大小
ctrl+w, + 放大分割大小
ctrl+w, = 平均分割大小
ctrl+w, 方向鍵 移動聚焦視窗
在程式碼中加速移動(必學)
※注意:要在normal mode下
[{ or [( 找左邊界第一個出現的{ or (
]} or ]) 找右邊界第一個出現的} or )
f@ or f" 向右找第一個出現匹配的符號或字元
$ 移到行尾,等於END
^ 移到行首,等於HOME
H 移到畫面最上方
M 移到畫面中間
L 移到畫面最下方
c$ 修改到行尾
d% 移除到行尾
dw 移除一個單字
d^ 移除到行首
% 找最近的() or {}
範圍選取技
※以下看到的"|"是「或」的意思v | c | d + i | a + { | [ | " | '
v: visual
c: change
d: delete
i: inner object
a: an object
{},[],"",'': region
va{ 選取最小範圍的{}部份
vi{ 選取最小範圍的{}部份(但不包含{})
di" 移除最小範圍的""部份(但不包含"")
ci( 修改最小範圍的()部份(但不包含())
va{= 選取最小範圍的{}部份並排列整齊
vim plugins
vim官網有非常多的plugin可以用,如果興趣可以自己上去慢慢找NERD_tree.vim 目錄列表插件
taglist.vim 函式列表插件(需安裝ctags)
要加入plugin先在家目錄下面建立.vim/plugin目錄
> mkdir -p ~/.vim/plugin
之後把下載的plugin解壓縮之後都放到plugin目錄下面就行了,之後看一下它所附上的說明檔, 看要怎麼來設定使用這個插件,之後在加入對映的快速鍵來啟動插件。
> vim .vimrc 加入
"ctags command set for bsd
let Tlist_Ctags_Cmd = "/usr/local/bin/exctags"
"functional mapping
nmap <F1> :NERDTreeToggle<CR>
nmap <F2> :TlistToggle<CR>
我把F1, F2對映到這些plugin的啟動上面
總結
vim是個非常強大的編輯器,其實用起來像在打電動,所有很多的連續技,如果熟練的話,那麼寫程式或是編寫文件會大大的縮短時間,使工作更有效率。
訂閱:
文章 (Atom)